bouzuya.hatenablog.com

ぼうずやのにっき

PureScript の Data.Either にある hush

bouzuya/yzrhコマンドラインオプションの解釈部分をつくっている。 2018-11-17 に書いたものの続き。

短い形式のオプションに対応した。あとは……。

  • --foo=bar 形式
  • 引数が指定されていない
  • 存在しないオプションが指定されている
  • -- foo bar
  • ヘルプの表示
  • ( Boolean のオプション )
  • ( サブコマンド )
  • ( シェルでの補完 )

bouzuya/commander-b にある機能くらいはカバーしたいけどどうだろう。脱線している。


hush の話。

いままで↓のようなものを何度も書いていたのだけど。

maybeFromEither :: forall a b. Either a b -> Maybe maybeFromEither = either (const Nothing) Just

purescript/purescript-either パッケージの Data.Either モジュールに hush :: forall a b. Either a b -> Maybe b があった。

https://pursuit.purescript.org/packages/purescript-either/4.1.0/docs/Data.Either#v:hush

justinwoo/purescript-simple-json で知った。

readJSON_ ::  forall a
   . ReadForeign a
  => String
  -> Maybe a
readJSON_ = hush <<< readJSON

https://github.com/justinwoo/purescript-simple-json/blob/84a8c16232654a93909a90aa9c66aff724630db5/src/Simple/JSON.purs#L78-L82