Haskell,顺序程序流程?

时间:2011-11-12 21:59:29

标签: haskell

道歉,因为这似乎是一个非常奇怪的问题。我在haskell中的所有经验都是编写通常递归进度的函数(并且每次迭代都会减少一些数据元素)。但是,我有一组函数,每个函数对一个数据进行一些处理,我希望我的调用方法包含每个阶段,例如

(伪代码)

myFunc1 :: Something1 -> Something2

execute myFunc1 Something1
.
execute myFunc2
.
execute myFunc3
.
execute myFunc4
.

return Something2

但我不确定这是否可能?我只需要有一些愚蠢的东西:

myFunc4(myFunc3(myFunc2(MyFunc1(Something1))))

编辑:上述行不可能是正确的!

2 个答案:

答案 0 :(得分:8)

使用函数调用运算符$

myFunc4 $ myFunc3 $ myFunc2 $ myFunc1 $ Something1

或功能组成:

myFunc4 . myFunc3 . myFunc2 . myFunc1 $ Something1

let

let x = myFunc1 Something1 in
let y = myFunc2 x in
let z = myFunc3 y in
myFunc4 z

答案 1 :(得分:3)

如果您想保持从左到右的阅读顺序,您可以定义

(.>) = flip (.) -- are those in standard library somewhere?
($>) = flip ($)

myComplex = Something1 $> myFunc1 .> myFunc2 .> myFunc3 .> myFunc4