我正在玩pointfree.io,当我输入“\ x - > x * x”(又名方形函数)时,它确实输出了这个
join (*)
我不知道这个,我在Hoogle上查了一下:
-- | The 'join' function is the conventional monad join operator. It
-- is used to remove one level of monadic structure, projecting its
-- bound argument into the outer level.
join :: (Monad m) => m (m a) -> m a
join x = x >>= id
我不知道如何创建一个返回其参数平方的函数。有什么想法吗?
答案 0 :(得分:7)
((->)r)
类型与以下实例definition
instance Monad ((->) r) where
f >>= k = \ r -> k (f r) r
join
有以下definition
join x = x >>= id
所以让我们开始填写内容。
join (*)
= (*) >>= id
= \r -> id ((*) r) r
= \r -> r * r