変数の宣言の必要なし

Unicode対応で一部のギリシャ文字や添え字が使える

関数は

 hoge(x)=3/x

 hoge(3)=1

 returnは省略可能で、省略した場合、最後の式の値を返す

 

パイプライン演算子

t(n,x)=exp(n*cos(x))のように入れ子構造の関数について

t(n,x)=n*cos(x) |>exp

と書くことができる。

右の変数は引数が一つという制限がある

 

ブロードキャスト(ドット構文)

 配列A.+1

 で配列要素すべてに+1

 関数.(配列) → 配列要素それぞれを引数にできる

 

f(x)

f(x,y)

と引数の数が違う関数を別物として定義可能

 

多重ディスパッチ

f(float x)

f(string y)

を宣言すると、引数に応じて適応される

型だけではなく、f(x) f(x,y,z)など引数の数でも多重ディスパッチが適応される

 

構造体

Structは一度定義したら変更不可

Mutable structは変更可能

 

usingは借りてくる、Importは自分のものにする

 

ローカル変数とグローバル変数の区別もしない

グローバルで定義された変数xがあるとき、関数内でxを定義することが可能

 

ラムダ式は->

行列Aの転置行列はA'

数値微分で近似値を出してくれる関数がForwardDiff.jlのderivative(関数、変数)にある

A=B && C=A でIf文になる

 

pdf(分布P、a)=P(a)

 分布が配列ならブロードキャストしてP1(a),P2(a)...となる

 

X=[i for i=1:10]

 で配列を生成する

 

ifelse(条件、真、偽)

ただし、真偽いずれにせよ両方計算は行われるため、

ルートをとるなど、場合によってはエラーになる

 

三項演算子

float = bool ? A : B

 でboolに応じたIf文になる

こちらは片方しか計算しない

 

range(1:10,step=2) ==1:2:10

range(1:10, length=n) は分割数n