有人可以帮我在Haskell中编写自己的(.)函数版本吗?从这篇文章Haskell写你的($)函数的版本我知道如何确定这个函数的类型,但我的身体仍然有问题.我也不知道为什么ghci拒绝使用名称(..).
($$$) :: (b -> c) -> (a -> b) -> a -> c
($$$) f (g x) = ((f g) $) x
infixr 9 $$$
Run Code Online (Sandbox Code Playgroud)
我的另一个想法就是这个:
($$$) :: (b -> c) -> (a -> b) -> a -> c
($$$) f (g x) = map (f) (g x)
infixr 9 $$$
Run Code Online (Sandbox Code Playgroud)
错误消息显示"模式中的解析错误:g".
从签名:
($$$) :: (b -> c) -> (a -> b) -> a -> c
Run Code Online (Sandbox Code Playgroud)
你的函数需要3个参数.所以我会开始:
($$$) f g x = ...
| | \
| \ a
| \
| a->b
b->c
Run Code Online (Sandbox Code Playgroud)
更新
这种定义尝试($$$)不起作用:
($$$) (f g) x = ...
Run Code Online (Sandbox Code Playgroud)
它说这($$$)需要两个参数.我开始定义的方式($$$)说该函数有三个参数.
| 归档时间: |
|
| 查看次数: |
118 次 |
| 最近记录: |