演技:ハスケル - さまざまなタイプを受け入れ、私は以下の非常に基本的な例だと言うましょ応じ
f :: Either Int String -> IO()
だけでなく、機能g :: Int -> IO()
と機能g' :: String -> IO()
を、私は基本的に、「セレクタ」としてf
を実装したいですその入力に応じてg
またはg'
を呼び出すので、将来私はf
で作業する必要があります。なぜなら、私のプログラムはIntまたはStringにしか遭遇しないことがわかっているからです。
Either
を使用するこの方法は意味がありますか?このコンベンションは、主にエラーと例外の処理に使用されているようです。
このような例を実装するには、適切な方法やベストプラクティスは何でしょうか。私は聞いたことがある/ case
とbifunctorsについて読む。
異なる入力タイプの可能性を処理する方法は何ですか?それとも初めから避けなければならないものですか?
「g」と「g」は何をするのですか?あなたが達成しようとしていることに応じて、これは賢明なアイデアかもしれません。 – MathematicalOrchid
はい、この機能はすでに「どちらか」として存在します。 – Lee
sum型( 'Either')の値を取り除く方法を知りました。ニース!これは関数型プログラミングの基本的な操作です。あなたが見てきたように、実際には2つの関数が必要です。それぞれの可能なコンストラクタ( 'Left/Right')に対して1つです。 – chi