エンジニアのソフトウェア的愛情

または私は如何にして心配するのを止めてプログラムを・愛する・ようになったか

Lua

Lua 5.1とLua5.2の違い

Lua側から見た場合の差異。C言語向けのAPIの差異はいずれまた。 詳しくはリファンレスマニュアルの「Incompatibilities with the Previous Version」を参照してみてください。 言語構造の変更 制御構造に変更がありました。gotoの追加です。gotoはジャンプ先…

Luaの新しいリリース。

このあいだLuaのエントリを書いた翌日に、Lua.orgから新たなリリースがあったことについさっき気がつきました。 情報を共有すべくリンクをはります。 Custom Screen Print T-Shirts, Hats, Hoodies, Baseball Shirts, and Apparel. ずっと眺めていると、なん…

Lua 5.1とLua 5.2の非互換について

Io話を続けるつもりだったのだけれども。ネタを仕込んでいる間にわけあってLuaに手を出すことになり。そういや昨年末に新しいバージョン、Lua 5.2がリリースされたっけ、と思って調べてみたら。気をつけないとならない互換性のない変更があるのを見つけたの…

LuaとGLUTをShared Libraryでつなげてみる

わけあって、Lua再起動中。 おさらい 前回の様子。もう2年も経ってる…。 LuaとGLUTをつなげてみる - エンジニアのソフトウェア的愛情 LuaとGLUTをつなげてみる、のその後 - エンジニアのソフトウェア的愛情 LuaとGLUTをつなげてみる、のその後のその後 - エ…

LuaとGLUTをつなげてみる、のその後のその後

地味に地道に続けています。 GitHub - mattsan/LuaGLUT: Lua for GLUT (OpenGL) 実行とその結果。 ./lua_glut sample2.lua sample2.luaは600行足らずのスクリプトなんですが、デバッグにやたら苦労しました。以前(C++で)書いたものの焼き直しなので、書き…

LuaとGLUTをつなげてみる、のその後

とりあず、GitHubにアップしてみたり。 既存のLuaに手を加えるかわりに、自前でエントリを書いています。GitHub - mattsan/LuaGLUT: Lua for GLUT (OpenGL) makeでコンパイルできたら、次のようにしてサンプルを動かしてみてください。Ctrl+Cで終了します。 …

LuaとGLUTをつなげてみる

以前C++で書いたコードをLuaを使って実現させてみた。学習中ということもありかなり力わざでどうにかしています。 まず、GLUTをLuaから扱えるようするコードを書きます。 今回はこころみということで、イベントは表示とキー入力とタイマだけ、表示できるのは…

Luaでオブジェクト指向

Lua

-- クラスの定義 Point = {} Point.__index = Point; -- ここがミソ、その1 function Point:new(x, y) local new_instance = { x_ = x or 0, y_ = y or 0 } setmetatable(new_instance, self) -- ここがミソ、その2 return new_instance end function Poin…

Luaの戻り値のない関数の戻り値

Lua

入門Luaプログラミングを読んでいると、次のような記述がありました。 関数内にreturn文が存在しない場合は関数の出力がないということなので、nilが戻り値になる、と考えます。 入門Luaプログラミング P.33 「と考えます」が気になったのですが、次のような…

Fizz Buzz by Lua part2

Lua

で、Haskellで書いたやり方でLuaで書けないかやってみた。 function cycle(x) return function(x, i) i = i or 0 i = x[i + 1] and i + 1 or 1 return i, x[i] end, x, nil end fizz = coroutine.create(function() for k, v in cycle({ "", "", "Fizz" }) d…

Fizz Buzz by Lua

Lua

fizzbuzz = { [0] = "Fizz Buzz", [3] = "Fizz", [5] = "Buzz", [6] = "Fizz", [9] = "Fizz", [10] = "Buzz", [12] = "Fizz", print = function(self, i) print(self[i % 15] or i) end } for i = 1, 15 do fizzbuzz:print(i) end 実行結果。 1 2 Fizz 4 Buz…

double dispatch by Lua

Lua

module("message", package.seeall) FOO = 1 BAR = 2 BAZ = 3 ALPHA = 1 BETA = 2 GAMMA = 3 -- NULLメッセージ(インタフェースはあるが中身がないメッセージ)をつくる function create_null_message() local result = { protocol = "null", type = "null"…