Haskell 联合类型中的下一个状态 (*)
Next state (*) in Haskell union types
如何将其从 F# 转换为 Haskell?
type Exit =
| PassableExit of string * destination: RoomId
| LockedExit of string * key: Item * next: Exit
| NoExit of string option
完整代码:
https://github.com/thedevaspect/aspect-fsharp/blob/master/Game.fs
翻译为
data Exit
= PassableExit String RoomId
| LockedExit String Item Exit
| NoExit (Maybe String)
如果您也想要 labels/accessors:
data Exit
= PassableExit { info :: String, destination :: RoomId }
| LockedExit { info :: String, key :: Item, next :: Exit }
| NoExit { infoOption :: Maybe String }
当然 F# 使用元组,所以这会更直接(虽然不是 惯用语):
data Exit
= PassableExit (String, RoomId)
| LockedExit (String, Item, Exit)
| NoExit (Maybe String)
如何将其从 F# 转换为 Haskell?
type Exit =
| PassableExit of string * destination: RoomId
| LockedExit of string * key: Item * next: Exit
| NoExit of string option
完整代码: https://github.com/thedevaspect/aspect-fsharp/blob/master/Game.fs
翻译为
data Exit
= PassableExit String RoomId
| LockedExit String Item Exit
| NoExit (Maybe String)
如果您也想要 labels/accessors:
data Exit
= PassableExit { info :: String, destination :: RoomId }
| LockedExit { info :: String, key :: Item, next :: Exit }
| NoExit { infoOption :: Maybe String }
当然 F# 使用元组,所以这会更直接(虽然不是 惯用语):
data Exit
= PassableExit (String, RoomId)
| LockedExit (String, Item, Exit)
| NoExit (Maybe String)