概要
chialisp に関する
https://github.com/Chia-Network/clvm/blob/main/docs/clvm.org
の個人的解釈メモ。
ここではchialispの導入方法などについては扱いません。
list 系操作演算子
c (cons)
(c A B)
引数は二つ。二つの引数をlistにして返す
f (First)
(f X)
引き数は一つ。listを引数にし、listの最初の要素を返す。
r (Rest)
(r X)
引数は一つ。listを引数にして最後の引数を返す
l (ListP)
(l X)
引数はひとつ。引数がlistなのかそれ以外の値なのかをかえす。listであればtrue,値であればfalse
制御構文
i (IF)
(i A B C)
引数は三つ。最初の引数が評価されてtrue(0以外)になった場合にBが評価され、falseの場合はCが評価される。
x (Raise)
(x X Y...)
引数は任意。例外を発生させる。
= (Equal)
(= A B)
比較演算子の== と同等。AとBが同じ値である場合にtrueを返す
> (大なり)
(> A B)
比較演算子の > と同等。 A > B を評価して true/falseを返す
>s :: greater than bytes
(>s A B)
比較演算子の>と同等。>と違うのは引数をバイトとして解釈するという点。
定数
q (Quote)
(q X)
引数を評価せずにそのまま返す。関数を定義できる。
演算子
+ (加算)
(+ a0 a1...)
通常の加算とおなじ。引数の数は任意。引数全ての合計をかえす。
- (減算)
(- a0 a1...)
通常の減算と同じ。引き数の数は任意。最初の引数に対して残りの引数を引いた数を返す
* (積算)
(* a0 a1...)
掛け算。引き数の数は任意。引数全ての積を返す
divmod (剰余)
(divmod A B)
引数は二つ。二番目の引数に対して一番目の引数で割り算を行い、余りを返す。
ストリーミング演算子
ハッシュ関数
sha256
(sha256 A)
引数に対してsha256でハッシュ計算した値を返す
ecdsa 演算子
以下はまだよくわからない(英語は原文)
point_add
(point_add a0 a1 ...)
takes an arbitrary number of bls12_381 points and adds them
pubkey_for_exp
(pubkey_for_exp A)
turns the integer A into a bls12_381 point