« [メモ] Eralng Cource: Module 1 - History | メイン | 米大統領選はYouTubeで »

2007年6月11日

[メモ] Eralng Course: Module 2 - Sequential Programming (前編)

もくじ

数値(Numbers)
  普通に数値を書く
    2#1010, 16#1AD3: 数字+シャープで2進16進。
    $A: $マークは Char->Ascii
    123.45: 小数点をうつと float
    123E-10: 有効数字のパターンでもかけるよ

アトム(Atoms)
  普通に文字を書く
    aaaa : "aaaa"という文字
    'I am' : スペースをいれたいときはシングルクォート

タプル(Tuples)
  固定長配列
    { aaa, bbb, ccc } : 要素数3のタプル

リスト(Lists)
  可変長配列
    [ aaa, bbb, ccc ] : 要素数3のリスト

変数(Variables)
  大文字で始める。
     値の割り当て(変数束縛)は一回だけ。
     上書きはできない。

複雑なデータ構造 ( Complex Data Structures )
  タプル/リストは重ねられる。

パターンマッチ(Pattern Matching)
  タプル/リストでも変数束縛
    A = 10             : A:=10
    {B, C, D} = {10, foo, bar}  : B:=10, C:=foo, D:=bar
    {A, A, B} = {abc, abc, foo} : A := abc, B = :foo
                      ※Aは2回あるが値が同じなので無矛盾
    {A, A, B} = {abc, def, 123}  : 失敗する
                       ※Aは2回あり、値が違うので
    [A,B,C] = [1,2,3]        : A:=1, B:=2, C:=3

    [A,B,C,D] = [1,2,3]       : 失敗する
                       ※要素数が違う。GNU Rとはちがう。

パターンマッチ(Pattern Matching)
  "|"をつかったリストの操作
    [A,B|C] = [1,2,3,4,5,6,7]   : A:=1, B:=2, C:=[3,4,5,6,7]
    [H|T] = [1,2,3,4]        : H := 1, T := [2,3,4]
    [H|T] = [abc]          : H := abc, T := []
    [H|T] = []            : 失敗
             ※ HはHead、TはTail。先頭の値を取り出す。
               foreach/for...inに相当する処理でよくつかう。
               Perlだと pop()/unshift()。
               最後は空リスト[]になり失敗する。
    {A,_, [B|_],{B}} = {abc,23,[22,x],{22}} : A:=abc, B:=22
             ※ _ は無名変数。参照不可。何度でも使える。
               普通の変数は一度しか代入できないので、
               使い捨てしずらい。
               なので、いらんものは _ に放りこんでおく。

- - -

 もくじ

Eralng Course: Module 2 - Sequential Programming
http://www.erlang.org/course/sequential_programming.html

投稿者 kawaguti : 2007年6月11日 03:36

トラックバック(0)

このブログ記事を参照しているブログ一覧: [メモ] Eralng Course: Module 2 - Sequential Programming (前編)

このブログ記事に対するトラックバックURL: http://do-gugan.com/cgi-bin/mt/mt-tb.cgi/1994

コメントする