ソースコード

ファイル名

cotowali のソースコードのファイル名に必須の制約はありませんが、拡張子に .li を使用するのを推奨します。

エントリーポイント

cotowali のソースコードは上から順番に実行され、エントリーポイント関数はありません。もし必要な場合、以下のようにして疑似的なエントリーポイントを実現できます。

fn main() {
  echo('hello')
}

main()

ファイルの読み込み

他のファイルを読み込むためには require を使用します。これはコンパイル時に解決される点で source コマンドと異なります。

// math.li
fn add(a int, b int) int {
  return a + b
}

// main.li
require './math.li'
assert add(1, 1) == 2

リモートファイル読み込み

require では http, https 及び github を使用して、リモートファイルを読み込めます。

http 及び https では url を指定します。github の場合は require 'github:user/repo@ref/path' のように指定します。ref は省略できません。

// https
require 'https://raw.githubusercontent.com/cotowali/cotowali/main/examples/hello_world.li'

// github
require 'github:cotowali/cotowali@main/examples/hello_world.li'

チェックサム検証

require にはチェックサムを指定できます。チェックサムを指定した場合、読み込み対象のファイルが正しいチェックサムを持つことをコンパイル時に検証します。チェックサムのアルゴリズムには md5, sha1 および sha256 が使用できます。

require 'github:cotowali/cotowali@main/tests/empty.li' {
  md5   : 'd41d8cd98f00b204e9800998ecf8427e',
  sha1  : 'da39a3ee5e6b4b0d3255bfef95601890afd80709',
  sha256: 'e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855',
}

Copyright © zakuro <z@kuro.red>

Design by zakuro & Yuki Amane (Pianoforte)