Catyスクリプトでモノイド圏の基本
リダイレクト記号を使ってみる。
command codiag:: @1 T | @2 T -> T {
when {
1 => pass,
2 => pass
}
};command diag
:: T -> @1 T | @2 T {
pass >in;
randomint 1 2 >tag;
%in | tagged %tag
};command assoc-inv :: @1 A | @2 (@1 B | @2 C) -> @1 (@1 A | @2 B) | @2 C {
when {
1 => @1 @1 pass,
2 => when {
1 => /*@2 @1*/ @1 @1 pass,
2 => /*@2 @2*/ @2 pass,
}
}
};