NF

地方で働くプログラマ

えいくさー 第3回

「Elixir 擬人化」で検索したけど、特にないらしい。
言語の擬人化ブームが過ぎた後に出てきた言語?だからかな・・・

    • -

関数について。
有名関数(名前付き関数)と無名関数があるらしい。
名前付き関数は普通だけど、C++経験者としてはクラス的な?モジュールを定義して、その中でないと名前付き関数は使えないとか。

defmodule Foo do
  def inc(n) do
    n+1
  end 
end

これはFooモジュールに関数inc()を定義してる。モジュール名は大文字スタート、関数名は小文字スタートという規約らしい。引数は、動的型付けなので型名は不要。このファイルをファイルとして保存して実行。

iex(46)> c "foo.exs"
[Foo]
iex(47)> Foo.inc(10)
11

できました。


次に無名関数。fn(引数)で定義、関数型では良くあるらしいが、何か変数に関数を代入して使うらしい。シェルから打つと、こんな感じ。ドットの後に括弧というのが慣れないですね・・・

iex(51)> bar = fn(n) -> 
...(51)> n-1
...(51)> end
#Function<6.127694169/1 in :erl_eval.expr/5>
iex(52)> bar(10)
** (CompileError) iex:52: undefined function bar/1

iex(52)> bar.(10)
9


次回に続く