Haskellに惑わされ – 10

この3日間 Haskellに格闘です 格闘といっても、巨大な怪獣に武器も無く立ち向かうが如くであり、もともと勝つことは不可能な戦いです

こんな時にはどうするか? 問題を切り分けるしかありません そもそも \関数 (ラムダ関数)をおまえさんは使えるようになったのですか?

うーん 自信無いなあ

それでは

たとえば 100::Intから 120::Intまでの整数リストがあった時、これを全て 3倍にするには どうするか? うーんこの前学んだ map関数を使用すれば簡単!

Prelude>map (*) 3 [100 .. 120]

ああ ダメダメこれでは動作しません Haskellより怒られます 何故かと言えば mapは

Prelude> :t map
map :: (a -> b) -> [a] -> [b]

で分かるように、 2引数関数なのですよね ところが、Prelude>map (*) 3 [100 .. 120]などとすれば 3引数となってしまいますよね

ではどうするか? もちろん mapが適用するのは、関数なのであり、(*) 3 などというのは関数ではありません 関数にするには (3 *)とすれば良いはずです そうすると きたきたーっ

Prelude> map (3 * ) [100 .. 120]
[300,303,306,309,312,315,318,321,324,327,330,333,336,339,342,345,348,351,354,357,360]

はいできましたねっ ばっちりです