2017-12-15 25 views
0

誰かがこの関数でマップするために適用される2つのパラメータを教えてもらえますか、またはこの括弧を追加してください。Haskell - この関数のどのパラメータ?

pad n ys = map Just ys ++ replicate k Nothing 
    where k = n - (length ys `mod` n) 

ありがとうございます!

+1

関数呼び出しは、したがって、最も高い優先順位の演算子である... – Bakuriu

+2

'map'は' Just'と 'ys' – user2407038

+0

に適用されますそれは ''(マップだけys)++(複製k何もない) 'です。 – chi

答えて

2

機能アプリケーションは、非常に強固に結合:

ある
(map Just ys) ++ (replicate k Nothing) 

は、関数がコンストラクタJustで、コンテナ/リストはysです:

map Just ys ++ replicate k Nothing 

はとして解析します。

+1

私は++を演算子として追加しなければならないと感じています。関数のように引数も取るが、中置演算子は優先順位が非常に低い。 –

0

この場合は、あなたがタイプ考慮して、それを把握することができます:

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]