私はいくつかの ADT を持っていますが、それぞれに別の ADT が含まれている場合と含まれていない場合があります。下位レベルからデータを取得する必要があり、削除できると確信している非常に反復的なコードを書いています。Real World Haskell と "Learn You a Haskell For Great Good" でいくつかのサンプル コードを見てきましたが、よくわかりません。これは、ADT の省略された無関係な詳細の例です。
T24Report
- projTitle :: Maybe ProjectTitle
- zip :: Maybe String
StreetAddress から郵便番号を取得するには、次のようにしました。
projNameStr :: T24Report -> String
projNameStr t24 = if isNothing projTitleMaybe
then ""
else (fromMaybe "") $ zip $ fromJust projTitleMaybe
where
projTitleMaybe = projTitle $ project t24
オブジェクトの連鎖が深まるにつれて、コードの反復性も増します。もっと良い方法があるはずです。アイデア?参照?StackOverflow で同様の質問を見つけることができませんでしたが、ここにあるに違いないと思います...これは、尋ねられたに違いない単純な問題のようです。
ありがとう、ティム