{-# LANGUAGE NamedFieldPuns #-}
data Factory = Factory { fId :: Int}
data Link = Link Int Int Double
hasLinkTo :: Factory -> Link -> Bool
hasLinkTo Factory{fId} (Link fId _ _) = True
ガットエラーNamedFieldPunsは、パターンは
• Conflicting definitions for ‘fId’ Bound at: <source.hs> In an equation for ‘hasLinkTo’
私はそれを修正することができ、変数を使用して知っている
、変数名を使用して一致する
hasLinkTo Factory{fId=a} (Link b _ _) = a == b
私は
- をお願いしたいです編集の理由パターンマッチングの仕組みをよりよく理解するためにilを使用します。
- 関数を記述するための慣用方法はありますか?例えば
:私はこの
connected :: Int -> Link -> (Int, Double)
connected i (Link i j d) = (j,d)
connected i (Link j i d) = (j,d)
のようなものを書きたいノードi
にどのようなリンク、抽出したい場合(==)かどうかを確認する方法はありますのみパターンマッチングを使用して非数値リテラルでは?
connected 0 (Link 0 j d) = (j,d)
は問題なく動作しています。上記の例はそうではありません。