损坏的代码示例:
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/