Eri*_*ikR 3 haskell record variant
鉴于这种:
data Foo = Bar { name :: String } | Baz { nickname :: String }
Run Code Online (Sandbox Code Playgroud)
两者的功能name和nickname似乎是类型Foo -> String:
:t name
name :: Foo -> String
:t nickname
nickname :: Foo -> String
Run Code Online (Sandbox Code Playgroud)
但是,定义不完整,因为以下两个表达式都会引发模式匹配错误:
name $ Baz { nickname = "Bob" }
nickname $ Bar { name = "Fred" }
Run Code Online (Sandbox Code Playgroud)
是否有可能完成的定义name和nickname,像IE的东西:
name Baz { nickname = n } = ...
nickname Bar { name = n } = ...
Run Code Online (Sandbox Code Playgroud)
在拥抱中尝试此操作会产生错误,例如"变量名称的多个声明".
| 归档时间: |
|
| 查看次数: |
354 次 |
| 最近记录: |