绑定两个功能。替代语法

时间:2016-12-21 19:40:52

标签: haskell

f = do 
  let off =  getOff >>= computeOffset

getOff :: M Int
   computeOffset :: Int -> Int

M是一个单子。

看起来并不好看。我可以使用糖语法来改进它吗?

2 个答案:

答案 0 :(得分:1)

扩展为do语法可以通过以下方式完成,从:

开始
getOff >>= computeOffset

有一个参数被传递给隐藏的computeOffset。在转到do语法之前显示它的内容可能会有所帮助:

getOff >>= \off -> computeOffset off

现在,您可以在第一行中使用do,然后在第二行中使用off来编写do off <- getOff computOffset off 语法。

Data a []= new Data[27];

答案 1 :(得分:0)

如果computeOffset的类型为Int -> Int,并且您希望将其映射到getOff的结果,则可以使用fmap

f :: M Int
f = fmap computeOffset getOff

......或者,使用适用的符号(几乎相同)

f :: M Int
f = computeOffset <$> getOff