変数の宣言の必要なし
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