Haskellの基礎(1) 関数とリスト

2.4 リスト処理の基礎(1) countlineコマンド

リストに関して

これまでリストに関してちょっと考え違いしていたかも。
Haskellのリストはリテラルの書き方を見ると配列のようにイメージしてしまう。
たとえばC言語で配列は以下のように書くし、

unsigned char strings = {'H','e','l','l','o','\0'};


Smalltalkではこんな感じで書く。

strings = #(#H #e #l #l #o)


Haskellのリストリテラルの[]ととても似ている。
でもHaskellのリストはC言語でいうところのリンクリストなんだね。
だから必ず最後に空(くう!)リストがある。


あと、一種類の値しか入れられないのは、型チェックが厳密なHaskellらしい。

$演算子について

$演算子というか、Haskellにも演算子があるんですね。
これは関数とは違うものなのかな?C言語みたいに。
それともC++みたいに、演算子も一種の関数という扱いなのかな?
ということで(後で話が出てくるかも知れないけど)軽く調べてみた。

Haskellでは演算子を自分で好きに定義できる(a +++ b とか、a .+. b とか)。 というか記号だけでできた関数名にするとちゅうち記法(←なぜか変換できない)で使えるようになるらしい。

http://route477.net/d/?date=20070519


う〜ん、はっきりと分かったわけじゃないけど、現時点での理解は、演算子 \subset 関数。
演算子は関数の一種ってこと。

リスト処理の基本(2) headコマンド

文法について

ここに来て文法の説明があった。関数適用と関数定義。何だかとてもすっきりした気持ち(笑)。