誰かがこの関数でマップするために適用される2つのパラメータを教えてもらえますか、またはこの括弧を追加してください。Haskell - この関数のどのパラメータ?
pad n ys = map Just ys ++ replicate k Nothing
where k = n - (length ys `mod` n)
ありがとうございます!
誰かがこの関数でマップするために適用される2つのパラメータを教えてもらえますか、またはこの括弧を追加してください。Haskell - この関数のどのパラメータ?
pad n ys = map Just ys ++ replicate k Nothing
where k = n - (length ys `mod` n)
ありがとうございます!
機能アプリケーションは、非常に強固に結合:
ある(map Just ys) ++ (replicate k Nothing)
は、関数がコンストラクタJust
で、コンテナ/リストはys
です:
map Just ys ++ replicate k Nothing
はとして解析します。
私は++を演算子として追加しなければならないと感じています。関数のように引数も取るが、中置演算子は優先順位が非常に低い。 –
この場合は、あなたがタイプ考慮して、それを把握することができます:
Prelude> pad n ys = map Just ys ++ replicate n Nothing
Prelude> :t pad
pad :: Int -> [a] -> [Maybe a]
Prelude> pad n ys = map Just (ys ++ replicate n Nothing)
Prelude> :t pad
pad :: Int -> [Maybe a] -> [Maybe (Maybe a)]
Prelude> pad n ys = (map Just ys) ++ (replicate n Nothing)
Prelude> :t pad
pad :: Int -> [a] -> [Maybe a]
関数呼び出しは、したがって、最も高い優先順位の演算子である... – Bakuriu
'map'は' Just'と 'ys' – user2407038
に適用されますそれは ''(マップだけys)++(複製k何もない) 'です。 – chi