1. oskats1987

    Posted

    oskats1987
Changes in title
+Haskellのmap関数を使ってみた(はじめての投稿)
Changes in tags
Changes in body
Source | HTML | Preview
@@ -0,0 +1,62 @@
+#Haskellで、map関数使ってみました。
+
+まだまだHaskellのことはよく分からないですが、解説書を読みながら簡単なプログラムを作り動かしてみました。
+
+```test.hs
+sa 1 = "one"
+sa 2 = "two"
+sa n = "other"
+
+main::IO()
+main = do
+ let l=[1,2 .. 20]
+
+ print (map sa l)
+```
+
+実行結果は
+
+```
+["one","two","other","other","other","other","other","other","other","other","other","other","other","other","other","other","other","other","other","other"]
+```
+
+となります。
+
+---
+
+##解説
+
+まずは最初の部分。
+
+```test.hs
+sa 1 = "one"
+sa 2 = "two"
+sa n = "other"
+```
+
+関数`sa`を定義しています。
+引数に`1`が渡されれば`one`を返します。
+`2`なら`two`を、それ以外なら`other`を返します。
+
+```test.hs
+ let l=[1,2 .. 20]
+
+ print (map sa l)
+```
+
+`main`関数の中身です。
+上の行は1から20までの整数のリストを表しています。
+そのリストを`l`に束縛しています。
+
+map関数は、関数とリストを引数に取り、リストの各要素を関数に適用します。
+`map sa l`
+つまり、リスト`l`の最初の要素は`1`で、
+`sa 1`
+を実行します。
+次は`2`なので
+`sa 2`
+を実行します。
+これをリストの最後、`20`まで繰り返します。
+
+よって実行結果は、
+`"one","two"`の後が`"other"`が連続します。