jus*_*ive 0 f# functional-programming function-composition
在阅读有关函数组合的教程时,我尝试了以下内容:
let prefixFun a b = a + "" + b;;
let exclaim s = s + "!";;
let bigHello = prefixFun >> exclaim;;
Run Code Online (Sandbox Code Playgroud)
但是定义bigHello返回以下类型不匹配错误
let bigHello = prefixFun >> exclaim;;
----------------------------^^^^^^^
stdin(28,29): error FS0001: Type mismatch. Expecting a
'(string -> string) -> 'a'
but given a
'string -> string'
The type 'string -> string' does not match the type 'string'
Run Code Online (Sandbox Code Playgroud)
prefixFun返回字符串并exclaim期望字符串.你能帮我理解并解决问题吗?
谢谢.
小智 5
prefixFun,应用一个参数后,不返回字符串.它返回一个函数,string -> string由于部分应用和函数currying而具有类型.
这是执行>>:
let (>>) f g x = g ( f(x) )
请注意,f它仅适用于一个参数.
我有一种感觉,你想要的bigHello是一个功能,取一个人的名字,然后添加一个感叹号.以下是您可以使用的内容!
let bigHello = prefixFun "Hello " >> exclaim
请注意,它prefixFun "Hello "具有类型string -> string,因此遵循功能组合的规则.