Crystal
前回 ライブラリにしてみた。名前はてきとうです。 使い方 プロジェクト作成 $ crystal init app testtest2 shard.yml に以下を追記 dependencies: esty: github: righ1113/esty コマンドを打つ $ cd testtest2 $ shards install src/testtest2.cr に以下を…
前回 前回の続きで、ズンドコキヨシをやってみた。 # $ crystal zdk.cr # 遅延評価 class Delay(T) def initialize(init_v : T, &block : -> T) @func = block @flag = false @value = init_v end def force unless @flag ret = @func.call @value = ret.nil…
前回 Crystal のドキュメントはこの pdf が良い。 https://crystal-jp.github.io/introducing-crystal/assets/pdfs/introducing-crystal.pdf 前回の続きで、FizzBuzz をやってみた。 # $ crystal fizzbuzz.cr # 遅延評価 class Delay(T) def initialize(init…
前々回 前回 前々回の続きで、遅延評価で囲む部分を、マクロで短縮してみた。 # $ crystal test7.cr # 遅延評価 class Delay(T) def initialize(init_v : T, &block : -> T) @func = block @flag = false @value = init_v end def force unless @flag ret = …
if をマクロにしたらスッキリした。チェーンでは書けなくなるけど。 マクロの引数は先行評価されないからね。 (三項演算子使えば良いじゃんと思ったのは内緒だ) # $ crystal test6.cr macro mif(b, t, e) return {{t}} if {{b}} {{e}} end struct Int # 階…
どんな型でも遅延評価できるようにした。 Delay.new には型とその適当な値も渡すようにした。 # $ crystal test5.cr # 遅延評価 class Delay(T) def initialize(init_v : T, &block : -> T) @func = block @flag = false @value = init_v end def force unle…
フィボナッチができた。 # crystal test4.cr # 遅延評価 class Delay def initialize(&block : String -> Int32) @func = block @flag = false #@value = nil @value = 0 end def force unless @flag ret = @func.call "" @value = ret.nil? ? raise("@func.…
関連 メソッドチェーンでプログラムを書くことを考えている。 Bool や Int にメソッドを追加して、ひとまず今の形になった。 階乗のプログラム # crystal test4.cr # 遅延評価 class Delay def initialize(&block : String -> Int32) @func = block @flag = …
なんとなく Crystal をやってみた。 環境は Linux(Ubuntu) だ。 インストール https://ja.crystal-lang.org/install/ から。 Windows では WSL を使うようだ。 VSCode https://github.com/crystal-lang-tools/vscode-crystal-lang が良いらしい。 Hello Worl…