の戻り値を操作します許可されません。この問題を解決するにはどうすればよいですか?Haskellのは、私は(Haskellのプレリュードからルックアップを使用して)次のコードを持つルックアップコール
1
A
答えて
2
、あなたが一緒に値を追加している、そしてNothing
値(すなわち0
として扱う)、あなたはまた、mapMaybe
を使用して関数を書くことができ無視するのが自然だろうので、:
import Data.Maybe (mapMaybe)
al :: [(Char, Int)]
al = [('A', 1), ('B', 2), ('C', 3)]
strToInt :: String -> Int
strToInt = sum . mapMaybe (`lookup` al)
をGHCi:
*Q46515794> strToInt "AB"
3
*Q46515794> strToInt "AC"
4
*Q46515794> strToInt "ABC"
6
1
ルックアップが常に成功するという前提条件がある場合は、fromJust (lookup c al)
のように値を解析するのにfromJust :: Maybe a -> a
を使用します。
それ以外の場合は、ルックアップに失敗した場合に返すために、「デフォルト」の値(例:0
)が必要です。その後、fromMaybe :: a -> Maybe a -> a
を使用して、デフォルト値を最初のパラメータとして使用し、値を解析します(たとえば、fromMaybe 0 (lookup c a1)
)。この場合
+3
これらは唯一の2つの可能性ではありません。 '(+)<$> lookup c a1 <*> strToInt cs'で' Nothing'を伝播させたいかもしれません。 –
1
あなたのロジックを制御する必要があると思います。提供するキャラクタがNothing
を返すときに、あなたが望むものがわからない場合、この関数はMaybe
型を返す方が良いでしょう。
Nothing
を0
として扱いたい場合は、mapMaybe
の方がいいです。それとも、その後、Maybe
タイプの結果をしたい場合は...
al :: [(Char, Int)]
al = [('A', 1), ('B', 2), ('C', 3), ('D', 4)]
strToInt :: [(Char, Int)] -> String -> Maybe Int
strToInt ts cs = foldr (\c m -> (+) <$> (lookup c ts) <*> m) (Just 0) cs
*Main> strToInt al "AJN"
Nothing
*Main> strToInt al "ABCD"
Just 10
関連する問題
- 1. Haskellは:私はHaskellで、次のコードを持っている変数
- 2. Haskellは、私は次のコードを持っているのInt
- 3. Haskellの私は、次のコードを持っている
- 4. Haskellのエラー - 私は多項式の追加を扱う以下のHaskellコードを持って
- 5. プリント出力、私はこのコードを持っていると仮定しHaskellの
- 6. 私の2つのコードはどうして違うのですか? (Haskell、Merge Sort)
- 7. Haskellはしても、ここに私のコードは、数イテレーション
- 8. Haskellコードのコンパイラエラー
- 9. いくつかの引数を持つmapの使い方 - Haskell
- 10. は、私は次のコードを持つインスタンスオブジェクト
- 11. なぜhaskellのネットワークライブラリはノンブロッキングソケットを使用していますか?
- 12. 私はHaskellの新人だ
- 13. Haskell Concurrent.Channel:この2つのコードの違いは何ですか?
- 14. 私は、次のコードを持つクラスオブジェクト
- 15. 使用ExtJSには、私は次のコードをフォーム持って
- 16. 私は次のコードを使用して私のウェブサーバからファイルをダウンロードした
- 17. Haskell、逐次プログラムフロー?
- 18. 私は、Haskellでシングルトンタイプを正しく考えて使用していますか?
- 19. 私のHaskellのプログラムは、私のような機能を持っている
- 20. タイプは完全に私はHaskellの本からコードスニペットを以下している
- 21. HaskellでのSSLの使用
- 22. Haskellを使用して画像からピクセルを読み取る
- 23. Haskellのタプルは <p>GHCiのを使用して</p>は、私は次の関数を作成しました...それは明らかかもしれませんが、私はプロローグが広範囲ので、私はこの1つについて迷わすよやった私はHaskellのに新たなんだ
- 24. Haskellの多次元配列
- 25. Haskellの高次関数
- 26. 次のコードを使用して、私はいくつかのグループを作成し
- 27. Haskell用のXMLパーサーは?
- 28. はHaskellの
- 29. はHaskellの
- 30. はHaskellのに
何を、あなたの意見では、文字列がa1' 'で発生していない文字が含まれている場合に発生することになっていますか? –