メインメニューを開く

KRC (Kent Recursive Calculator) は遅延評価方式の純粋関数型プログラミング言語である。

KRC
パラダイム 関数型宣言型
登場時期 1981年
設計者 デビッド・ターナー
型付け 動的型付け
影響を受けた言語 SASL
影響を与えた言語 MirandaOrwell (OL)Haskell
ウェブサイト krc-lang.org
テンプレートを表示

目次

概要編集

KRCデビッド・ターナーにより設計され、1979年11月から1981年10月にかけて、EMAS オペレーティングシステム上に BCPL で実装された。

同じくターナーによって設計された SASL を簡略化した言語で、パターンマッチガード、等式で表現された再帰可能な関数定義、ZF 表記(リストの内包表記)を備えている一方、where 句は省略された。変数の型が実行時に決まる動的型付け言語である。

KRC の後継言語は Miranda である。Miranda では多相型が導入された他、KRC では省略された where 句が実装されている。

1980年代にケント大学オックスフォード大学で関数型プログラミングの講義に使用された。

BCPL による実装は C 言語にポーティングされ、2018年現在、公式ウェブサイトでソースコードが公開されている。

サンプルコード編集

Hello, World編集

krc> "Hello, World\n"!
Hello, World

関数定義編集

krc> I x = x
krc> I 42?
42

遅延評価編集

krc> answer = const 42 (1 / 0)
krc> answer?
42

パターンマッチ編集

krc> total [] = 0
krc> total (x:xs) = x + total xs
krc> total [1..10]?
55

リスト編集

krc> take 20 [10, 14..]?
[10,14,18,22,26,30,34,38,42,46,50,54,58,62,66,70,74,78,82,86]

再帰関数編集

krc> fac 0 = 1
krc> fac n = n * fac (n-1)
krc> fac 10?
3628800

相互再帰関数編集

krc> ev 0 = "TRUE"
krc> ev n = od (n-1)
krc> od 0 = "FALSE"
krc> od n = ev (n-1)
krc> map ev [1..10]?
["FALSE","TRUE","FALSE","TRUE","FALSE","TRUE","FALSE","TRUE","FALSE","TRUE"]

ガード編集

krc> fac n = 1,             n == 0
krc>       = n * fac (n-1), n > 0
krc> fac 10?
3628800

文字列の連結編集

krc> implode ["Hello, ", "World", "\n"]?
"Hello, World\n"

参考文献編集

外部リンク編集