【发布时间】:2014-12-22 12:56:14
【问题描述】:
我是新手,刚开始学习 Haskell,所以如果我提出愚蠢的问题,请多多包涵。
最近我在 SO 中遇到了一些问题,演示了如何推导函数和表达式的类型和实现(例如
How can I understand "(.) . (.)"?
&
Haskell function composition, type of (.)(.) and how it's presented )
我觉得答案很鼓舞人心
然后,我尝试为自己设计一些练习,以确保我知道如何应用这些技巧。
然后我自己想出了这个表达式:(<*>)(<*>),我不知道如何解决。
在 GHCi 中,它给出的类型签名为:
(<*>)(<*>) :: Applicative f => (f (a -> b) -> f a) -> f (a -> b) -> f b
但我的问题是如何从
开始(<*>) :: Applicative f => f (a -> b) -> f a -> f b
并导出 GHCi 给出的类型签名?
另外,基于类型签名,(<*>)(<*>) = ??的实现会是怎样的?
我被卡住了,无法通过重新排列术语等技术解决这个问题。我什至不知道从哪里开始。
有人可以帮我吗?
非常感谢
注意**:(<*>)(<*>)这个表达式确实没有什么特殊含义,只是我自己随机想出来的一个练习
【问题讨论】:
-
我要感谢大家及时提供高质量的答案,所有答案都很棒且鼓舞人心,他们拯救了我的日子。我真的很难选择一个。我希望我能接受多个答案。
标签: haskell types functional-programming