colc

command module
v1.6.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 31, 2018 License: MIT Imports: 10 Imported by: 0

README

colc (COmbinator Logic Calculator)

Build Status

Combinator Logicをコマンドラインから使うためのツール

コンビネータ論理(Combinator Logic)とは

引数に関数を受け取る関数(コンビネータ)のみで計算をするという考え方をコンビネータ 論理という。 チューリング完全であることが証明されているため、コンピュータで可能な計算は全てコ ンビネータだけで計算が可能である。

以下にコンビネータ論理の主要な関数3つの例を示す。

Sコンビネータ

Sコンビネータは3つのコンビネータを引数に取り、以下のように並び替える。
※xyzはそれぞれ x y zという3つのコンビネータである。

Sxyz -> xz(yz)

以下の図のように、上記コンビネータはそれぞれ4つのコンビネータに分割され、3つの引 数を計算に利用する。

Sコンビネータとコンビネータの分割

Kコンビネータ

Kコンビネータは2つのコンビネータを引数に取り、1つ目のコンビネータを返す。

Kxy -> x
Iコンビネータ

Iコンビネータは1つのコンビネータを引数に取り、1つ目のコンビネータを返す。

Ix -> x
コンビネータの処理の流れ

コンビネータは計算不能になるまで計算結果を次の計算に利用する。 前述のSKIコンビネータによる連続した計算の例を以下に示す。

SKIの計算の流れ

上記の計算の例では、最終的に x というコンビネータに到達した。 xというコンビネータは存在しないため、計算できずに計算を終了している。 よって、 SKIx というコンビネータの計算結果は x である

colcコマンド

colcコマンドは上記のような一連の計算をコマンドライン(以下CLI)上で行えるようにし たものである。

インストール方法

Go言語をインストールし、以下のコマンドを実行する。

go get github.com/jiro4989/colc

または、このGitHubのReleaseページのバイナリをダウンロードする。

ヘルプ

colc -hで確認できる。

Usage:
  colc [OPTIONS]

Application Options:
  -v, --version         バージョン情報
  -s, --stepcount=      何ステップまで計算するか (default: -1)
  -o, --outfile=        出力ファイルパス
  -t, --outfiletype=    出力ファイルの種類(なし|json)
  -i, --indent=         outfiletypeが有効時に整形して出力する
  -c, --combinatorFile= コンビネータ定義ファイルパス
  -p, --print           計算過程を出力する
  -n, --noprintheader   printフラグON時のヘッダ出力を消す

Help Options:
  -h, --help            Show this help message
使い方
echo "Sxyz" | colc
# -> xz(yz)

colc clcode.txt

colc clcode.txt clcode2.txt

# ファイル出力
colc clcode.txt -o out.txt

# コンビネータ定義ファイルを読み込む
colc -c config/combinator.json clcode.txt
仕様
  1. 計算対象のテキストデータは行単位である。
  2. 引数(処理対象のテキストファイル)が未指定の場合、標準入力待ちとなる。
  3. 処理対象のテキストファイルは複数受け取れる。
  4. 最後まで計算させたくない場合は、計算ステップ数を指定して実行できる。

開発

ヘルプ
make
バイナリの生成
make build
グラフ画像の生成
make graph

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis
combinator
v1

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL