2
私は、次の種類、(いくつかの不必要な詳細をeliding)タイプタグイディオムイムを削除していますか?
type alias Mover =
{ x : Int
, y : Int
}
type Piece
= Enemy Mover
| Player Mover
を作成しましたそして、私は彼らに
enemy : Int -> Int -> Piece
enemy x y =
Enemy { x = x, y = y }
player : Int -> Int -> Piece
player x y =
Player { x = x, y = y }
を作成するために、これらの関数を使用しかし、私は自分自身が私ができる前に、この機能を使用することを見つけます実際にそれらを使用してください...
toMover : Piece -> Mover
toMover piece =
case piece of
Enemy mover ->
mover
Player mover ->
mover
...それはやや厄介なようです。これは私がこれを行うことになっている方法ですか、私は自分で物事を難しくしていますか?私はPlayer
を同じリストにいくつかのEnemy
のインスタンスとしておくことができ、時にはそれらの違いを伝えることができるようにしたいが、toMover
を呼び出さずに両方のタイプ(サブタイプ?)で動作する関数を書くことができるようにしたい。毎回。