-1

データ型を制御して、入力されたデータが Haskell に存在するかどうかを判断できるのでしょうか?

例えば:

  data Ruler    =Ruler Length Price deriving(Eq,Show)
  data Wallet =   Wallet Colour Ruler [Pencil] deriving(Eq,Show)
  data Pencil     =Pencil Penciltype Colour Price deriving(Eq,Show)
  data Colour     =Black | Blue | Green | Red deriving(Eq,Show)
  data Penciltype  =Leadpencil | Pen | Fountainpen | Feltpen deriving(Eq,Show)
  type Price     =Double
  type Length     =Int

アイデアはありますか?

そのような関数を定義したい:

   isRulerAvailable :: Wallet-> Bool
        if Ruler is Available in Wallet then True
          else False
4

1 に答える 1

4

Haskell でデータ型がどのように機能するかを誤解していると思います。

あなたのwalletデータ型が言うことは

ちょうど 1 つの定規、色、およびいくつかの鉛筆をタグ Wallet の下に保管します。

これは、その中Walletに 1 つしかなく、1 つRulerしか持てないことを意味しRulerます。

を格納しない可能性を許可したい場合は、 だけでなく、データ宣言でRuler使用します。Maybe RulerRuler

次に、関数は次のようになります。

isRulerAvailable (Wallet _ ruler _) = isJust ruler

する必要がありますimport Data.Maybe

の説明についてはMaybeこちらをご覧ください。

于 2013-05-14T19:08:18.933 に答える