Is eta reduction possible?

后端 未结 4 917
囚心锁ツ
囚心锁ツ 2021-01-12 20:25

Is it possible to apply eta reduction in below case?

let normalise = filter (\\x -> Data.Char.isLetter x || Data.Char.isSpace x )

I was

4条回答
  •  無奈伤痛
    2021-01-12 20:43

    Your solution doesn't work, because (||) works on Bool values, and Data.Char.isLetter and Data.Char.isSpace are of type Char -> Bool.

    pl gives you:

    $ pl "f x = a x || b x"
    f = liftM2 (||) a b
    

    Explanation: liftM2 lifts (||) to the (->) r monad, so it's new type is (r -> Bool) -> (r -> Bool) -> (r -> Bool).

    So in your case we'll get:

    import Control.Monad
    let normalise = filter (liftM2 (||) Data.Char.isLetter Data.Char.isSpace)
    

提交回复
热议问题