haskell - 为什么我不能在记录更新符号中使用函数参数?

标签 haskell

损坏的代码示例:

data Foo = Foo {
    bar :: (Int -> Int)
  }

baz = Foo { bar i = i*3 }

为什么这不可能?

最佳答案

这只是一个语法限制 - 我怀疑如果考虑此功能,它会被拒绝,因为有直接的替代方案。另外,如果它被支持,下一个问题将是为什么不与多个子句进行模式匹配,总体而言,它只会使语言变得更大,但并没有那么多好处。

对于您给出的具体情况,您可以使用 baz = Foo { bar =\x -> x*3 } 来代替,或者定义一个辅助函数。

关于haskell - 为什么我不能在记录更新符号中使用函数参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24215280/

相关文章:

haskell - 在Servant库中解密DataKind类型提升

haskell - GHC 能够尾部调用优化 IO 操作吗?

javascript - 如何共享延续的中间结果?

haskell - GHCi 如何为类型变量选择名称?

haskell - 为什么 GHC Haskell 中没有存在量化的类型变量

haskell - (++) 惰性求值的性能

haskell - 如何使用 getContents 从命令行获取输入?

haskell - 在 haskell 中构建带有可选字段的 protobuf 对象

haskell - 函数式编程中哪种自平衡树最简单?

haskell - 什么(如果有的话)是最小化 IO Monad 对我的代码的影响的普遍接受的方法