2022-06-22
精度付き緯度経度表現「Geo3x3」の86言語目の実装として、マイロソフト社による開発中のプログラミング言語「Koka」が加わりました!mitsujiさん、PR(プルリク)ありがとうございます!

まだ開発中のこの言語の特徴は副作用の型化。プログラミングの世界で、関数内で発生する画面表示などは副作用と呼ばれますが、Kokaではそれを型として明示します。


「The Koka Programming Language」

「効果」と日本語表記が目立ちますね!

サクッと brew で Koka をインストール

brew install koka

例えば、こちら割り算する関数を呼び出すKokaのプログラム

fun div(x: int, y: int): int { x / y } fun main() { div(10, 3).println }

funは関数、型はTypeScript風で後置、returnは省略可。test.kkとして保存し

koka -e test.kk

として、コンパイル&実行。

関数divに、デバッグ出力を追加してみます。

fun div(x: int, y: int): int { y.println x / y }

すると、コンパイル時にエラー

error: effects do not match

関数の型に、<console> を追加すると

fun div(x: int, y: int): <console> int { y.println x / y }

コンパイル&実行、再びできるようになりました。例外が発生する場合は <exn> を使い、コンソール出力と例外、両方発生する場合は下記のように両方指定します

fun div(x: int, y: int): <console, exn> int { y.println if (y == 0) { throw("divide by zero!") } x / y }

使ってみたくなりました?自分のよく使う言語のGeo3x3実装と、Kokaでの実装「geo3x3.kk」、見比べてセルフ相性診断してみましょう!

プログラム内でのブロックの書き方は、Geo3x3の実装のようにPython風インデントで書いても、本ブログのように波カッコとセミコロンを使ったJavaScript風に書いてもいいハイブリッド型。

どちらの流派の人にも入りやすい!

Tweet
クリエイティブ・コモンズ・ライセンス
本ブログの記事や写真は「Creative Commons — CC BY 4.0」の下に提供します。記事内で紹介するプログラムや作品は、それぞれに記載されたライセンスを参照ください。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / 「一日一創」画像 / RSS