モチベーション
Javascriptでは destructuring assignment 記法で簡潔にデータが取り出せる。
Haskellにも似たような方法があるけど、もっと使い勝手をJSに近づけたい。
const obj = {
foo: "FOO",
bar: "BAR",
baz: "BAZ",
qux: "QUX",
};
↑のデータから bar
と baz
だけを簡単に取り出したい場合は↓のようにできる。
const { bar, baz } = obj;
方法
NamedFieldPuns
言語拡張を使う。
例
data Options = Options
{ optionsFoo :: Natural
, optionsSrcFilePath :: !Text
, optionsDestFilePath :: !Text
, optionsBar :: Maybe Int
}
この言語拡張を有効にすると、↑のような型があったとすれば、例えば↓のような感じで特定のデータを取り出せる。
Options { optionsSrcFilePath, optionsDestFilePath } <- view optionsL
参考文献