あなたはどちらを提案しますか:
data Direction = Left | Right
type Direction = Bool
newtype Direction = Direction Bool
それから私は作っています:
data Move = WalkRight Bool | Jump
また
data Move = Walk Direction | Jump
前の回答によって異なります。タイプの関数がありますChar -> Maybe Move
:
charToAction 'q' = Just $ WalkRight False
charToAction 'd' = Just $ WalkRight True
charToAction 'z' = Just Jump
charToAction _ = Nothing
タイプMove
を次のように変更する必要があります。
data Move = Stationary | WalkRight Bool | Jump
? 関数は次のようになります。
charToAction 'q' = WalkRight False
charToAction 'd' = WalkRight True
charToAction 'z' = Jump
charToAction _ = Stationary
リストにはMaybeが必要ないので、これは不思議です:
data [a] = [] | a : [a]
Maybe
または、それをよりきれいにするために導出する方法はありますか?