Elm でルービック キューブのシミュレーションを実行しようとしていたときに、Elmがリスト内包表記をサポートしていないことに気付きました。Haskell または Python でさえ、次のように記述します。
ghci> [2*c | c <- [1,2,3,4]]
[2,4,6,8]
Elm では方法が見つかりませんでした。私が書かなければならなかった実際のリスト内包表記は (Haskell で):
ghci> let x = [0,1,3,2]
ghci> let y = [2,3,1,0]
ghci> [y !! fromIntegral c | c <- x]
[2,3,0,1]
にfromIntegral :: (Integral a, Num b) => a -> b変わりIntegerますNum。
Elm では、配列を使用しようとしました。
x = Array.fromList [0,1,3,2]
y = Array.fromList [2,3,1,0]
Array.get (Array.get 2 x) y
そして、私はMaybe型に問題を抱え始めました:
Expected Type: Maybe number
Actual Type: Int
実際、私はそれらが何であるかを調べなければなりませんでした。多分を回避する代わりに、リストで何かをしました:
x = [0,1,3,2]
y = [2,3,1,0]
f n = head ( drop n x)
map f y
それが効率的か正しいかはわかりませんが、私が試したケースではうまくいきました。
私の主な質問は次の2つだと思います。
- Elm はリスト内包表記をサポートしていますか? (私はちょうど使用すると思います
map) maybe配列の例で型を回避する方法は?head ( drop n x)リストの n 番目の要素を取得するために呼び出すのは効率的ですか?