让里面的单子符号可以吗?

鲁本

考虑以下有效的Haskell代码

module Main where

main :: IO ()
main = do
  let x = f
  print x

f :: Maybe (Int, Int)
f =
  Just 3 >>= (\a ->
    Just 5 >>= (\b ->
      return (a, b)))

f可以使用do-notation等效地重写该函数

f :: Maybe (Int, Int)
f = do
  a <- Just 3
  b <- Just 5
  return (a, b)

令我烦恼的是,当我将f内联内容放入行时,表示法不起作用以下代码甚至无法解析:

main :: IO ()
main = do
  let x = do
    a <- Just 3
    b <- Just 5
    return (a, b)
  print x

我是否纠正let我被迫诉诸于内政(>>=)

当我使用它时,以下代码也不会解析:

module Main where

main :: IO ()
main = do
  let x =
    Just 3 >>= (\a ->
      Just 5 >>= (\b ->
        return (a, b)))
  print x

除了不必要的有限权力外,我没有看到任何明显的原因let有没有一种优雅的bind内部使用方式let

泽塔

我是否纠正let我被迫诉诸于内政(>>=)

不:

main :: IO ()
main = do
  let x = do
      a <- Just 3
      b <- Just 5
      return (a, b)
  print x

Haskell的布局规则指明的结合体ep = e万亩至少意不亚于年初p(或第一结合,如果你使用多一次)。由于letin中do(几乎)遵循与相同的规则let … in,因此可以使用以下功能对此进行验证:

f :: Int
f = 
  let x =
    3 + 5
  in x

这不起作用,因为3 + 5缩进级别与相同或更高x然而,

f :: Int
f =
  let x =
       3 + 5
  in x

作品。此外,虽然main上述作品,它并没有真正传达ab在事物xdo块,所以这是一个更好一点,以稍微缩进他们:

main :: IO ()
main = do
  let x = do
        a <- Just 3
        b <- Just 5
        return (a, b)
  print x

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

里面的状态单子/单子变压器如何符号化?

来自分类Dev

android RecyclerView里面的RecyclerView吗?

来自分类Dev

Telerik RadGrid里面的modalpopup吗?

来自分类Dev

使用printf可以吗?

来自分类Dev

vCharBarChart向右可以吗?

来自分类Dev

使用pageswitch可以吗?

来自分类Dev

方法可以吗?在javascript文件中

来自分类Dev

PubNub + Parse集成。这个可以吗?

来自分类Dev

使用LinearLayout代替FrameLayout可以吗?

来自分类Dev

`require“ rubygems”`返回`false`可以吗?

来自分类Dev

这样创建PHP变量可以吗?

来自分类Dev

这种订阅事件的模式可以吗?

来自分类Dev

在<code>中使用<div>可以吗?

来自分类Dev

从空类继承可以吗?

来自分类Dev

robots.txt-可以吗?

来自分类Dev

锚点类型=按钮可以吗?

来自分类Dev

MATLAB中的稀疏表格,可以吗?

来自分类Dev

不调用close方法可以吗?

来自分类Dev

严格的别名规则可以吗?

来自分类Dev

创建动态别名,可以吗?

来自分类Dev

system()C函数可以吗?

来自分类Dev

这个HashSet测试示例可以吗?

来自分类Dev

比较PEPROCESS值可以吗?

来自分类Dev

在脚本中添加CSS,可以吗?

来自分类Dev

通用记录键可以吗?

来自分类Dev

使用可以吗?每个方法

来自分类Dev

自动ESXi备份,可以吗?

来自分类Dev

此网络配置可以吗?

来自分类Dev

获取提交类型的ID?可以吗?