プログラミング言語 Lua その2
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNG他の人サポ−ト頼む。
前スレ
http://pc2.2ch.net/test/read.cgi/tech/1034182349/l50
本家
http://www.lua.org/
5.0日本語訳
http://www.uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_manual_ja.html
0153デフォルトの名無しさん
NGNGIoState_free のなかで IoState_collectGarbage を呼んでるので
たぶん違うと思う。
IoState_doCString_ を何度やってもリークの量は増えたりしないので
プログラム中で IoState を1つしか使わない場合は問題にならないかも
しれないけど複数使い分けたいのでちょっと困る。
追っかけようと思ったんだけどざっと2000ブロックぐらいリークしてる。
まあ2,3箇所直したら全部きえるのかもしれないけど...
0154デフォルトの名無しさん
NGNG0155デフォルトの名無しさん
NGNG0156デフォルトの名無しさん
NGNGプリミティブやプロトタイプを一切解放してないからだと思われ。
main.c で IoState_free() するようにしたあと、インタプリタを起動、
>io Lobby debugCollector = 1
して、終了してみ。
なにしろまだ、バージョン番号すらついてませんから。。
0157デフォルトの名無しさん
NGNG>プリミティブやプロトタイプを一切解放してないからだと思われ。
IoState_free() の
PHash_do_(self->primitiveProtos, (PHashDoCallback *)freePrimitiveProtosCallback);
PHash_free(self->primitiveProtos);
このあたりで開放してると思われ。
>io Lobby debugCollector = 1
開放の前にGCが動くのでそこのデバック表示をオンにしても意味無いような。
とりあえずバージョン番号がつくのを待ってみます。
0158デフォルトの名無しさん
NGNGここんとこ毎日のように更新されてる。
Lua もがんばって欲しい...
0159デフォルトの名無しさん
NGNGLuaはもう安定期にはいってるからでは?
0160デフォルトの名無しさん
NGNG0161デフォルトの名無しさん
NGNGIoはまだバグリ−なんで様子みながら使った方がいいよ。
0162デフォルトの名無しさん
NGNG確かにもう安定期ですな。
Io も来年中ぐらいには製品に組み込めるぐらい安定して欲しいなー。
0163デフォルトの名無しさん
NGNG0164脊髄野郎
NGNGhttp://www.amazon.co.jp/exec/obidos/ASIN/8590379817
誰か読んだ?
0166デフォルトの名無しさん
NGNGhttp://www.inf.puc-rio.br/~roberto/luabook1.pdf
これとは別物?
0167デフォルトの名無しさん
NGNGでもこの PDF 155ページもあるしこれで十分のような。
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNG0170デフォルトの名無しさん
NGNG早速買った勇者はいないのか?
0171デフォルトの名無しさん
NGNGさすが、2ちゃんで最高の知的レベルを誇るム板!
こんなマイナーな言語がPart2ってすごいよね。
日本的には「HSP」や「ひまわり」なんかよりはるかに知名度低い
のに…。(藁)
Part1〜2熟読致しました。感心いたしました。
ブラジル発って言うか中南米原産の言語ってLuaぐらいじゃないでしょうか?
向こうも日本発って言うかアジア原産の言語ってRubyぐらい…て?(藁藁)
基本的には関数型言語に分類されるのでしょうか?
それならご本家関数型言語のスレに仁義は切っておられるのでしょうか?
ショバ代をよこせなんてケチな事を言ってきたら連絡下さい。
ガッツ〜ンと一発、やられたり…してね。(WWW)
Luaはゲームが得意のようですが、皆さんは何に利用されておられるの
でしょうか?
0172デフォルトの名無しさん
NGNG妹ヤバイ。
まず可愛い。もう可愛いなんてもんじゃない。超可愛い。
可愛いとかっても 「芸能人で言うと誰似?」
とか、もう、そういうレベルじゃない。
何しろ中1。スゲェ!なんかブラとかして無いの。何カップ?とか彼氏いるの?とかを超越してる。優しいし超可愛い。
しかも成長してるらしい。ヤバイよ、成長だよ。
だって彼女とか成長しないじゃん。だって自分の身長追い越してどんどん伸びてったら困るじゃん。キスするのに超背伸びとか困るっしょ。
身長が伸びて、一年目のときは俺よりうんと下だったのに、三年目のときは頭二つ分彼女が高いとか泣くっしょ。
だから彼女とか成長しない。話のわかるヤツだ。
けど末�ヘヤバイ。そbネの気にしなb「。成長しまくb閨Bお風呂一緒bノ入ろう?とか末マ想してる俺。ャсoすぎ。
妹っていたけど、もしかしたら妹じゃないかもしんない。でも妹じゃないって事にすると
「じゃあ、昼まっから妄想してる俺ってナニよ?」
って事になるし、それは誰もわからない。ヤバイ。誰にも分からないなんて凄すぎる。
あと超血が濃い。約二親等。続柄で言うと妹。ヤバイ俺、萌えすぎ。妹が成人する暇もなく萌え死ぬ。怖い。
それに超つるぺた。超寂しがりや。それにちょっとえっち。キスしたことある?とか平気で訊いてくる。キスて。彼女すらいたことねえよ、今まで。
なんつっても妹は料理が上手い。肉じゃがとか平気だし。
うちらなんて料理とかたかだか日曜日の昼飯を作るぐらいで上手く作れないからレトルトにしたり、コンビニに行ってみたり、昼飯抜かしたりするのに、
妹は全然平気。卵を片手で割ってる。凄い。ヤバイ。
とにかく貴様ら、妹の可愛さをもっと知るべきだと思います。
そんな妹の事ばっかり妄想してる俺とか超一人っ子。もっと親父がんばれ。超母ちゃんがんばれ。
0173デフォルトの名無しさん
NGNG0174デフォルトの名無しさん
NGNGttp://homepage3.nifty.com/Aransk/
久々に関数型言語のコラムを更新したせいか?(藁藁)
0175デフォルトの名無しさん
NGNG「ひろゆき」さん?
0176デフォルトの名無しさん
NGNG0177デフォルトの名無しさん
NGNGhttp://pike.ida.liu.se/
0178デフォルトの名無しさん
NGNGお。なかなか
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGhttp://pc2.2ch.net/test/read.cgi/tech/1072883528/
海外でよく使われていうる掲示板スクリプト
専用のオフラインリーダー作って下さい。
必要な条件はID、PASSを管理できること、
OpenJaneみたいな三面型の見た目。
簡単にローカライズできるように言語ファイルを採用
http://www.somedude.net/gamemonkey/
better than Luaとかどうとか
0182デフォルトの名無しさん
NGNG> 2ちゃんにおける余輩の全ての発言に「ヒーロー勇気」の
> 名前を冠することに致します。
以前こんな事言ってた奴が居たよな。思いっきり名無しさんに戻ってるが。
0183デフォルトの名無しさん
NGNGおお〜これ良いね〜!
これで、構造体がつかえれば・・・
LUAはデータ構造が柔軟につくれるとこが、やっぱ
いいんだな・・・あらためて思いました。
0184デフォルトの名無しさん
NGNGLua5.1のリリース時期に関しての文章です。
ttp://lua-users.org/lists/lua-l/2004-01/msg00012.html
>私は、このリストに関するあるニュースを読んだ>。しかし、誰か情報を持っていますか、何は5.1が変化するだろうか、また、それがいつリリースされるだろうかに関して?
大変化はインクリメントのガーベジ・コレクションになるでしょう。
いくつかの小さな変更がさらにあるでしょう。
現在、リストは多かれ少なかれこれです:
* lexerの中の¥r¥nのよりよい取り扱い
* 自分のメモリアロケーション機能を持ったLua状態を作ることができます。その結果、この状態はこの機能によってそのメモリアロケーションをすべて行います。
(したがって、Lua核心は「malloc」を必要としないでしょう。)
* より柔軟な長いストリングデリミター
( ttp://lua-users.org/lists/lua-l/2003-11/msg00301.html を参照。)
* パーザ、完全にリエントラント
( ttp://lua-users.org/lists/lua-l/2003-11/msg00359.html を参照。)
* ローカル変数用の新しい意味論、の中で、1つの「のために」ループ( http://lua-users.org/lists/lua-l/2003-04/msg00332.html を参照)
* '#'の取り扱いの変化( ttp://lua-users.org/lists/lua-l/2003-11/msg00332.html を参照)
* varargsを扱う新しい方法
( ttp://lua-users.org/lists/lua-l/2003-10/msg00362.html を参照。)
私たちは、互換性問題を備えた大きな世話をしています。
に関して「いつ:」
新しいごみ収集人は模範を示すでしょう。
準備ができている場合、Lua 5.1は準備ができているでしょう。
私たちは、2月3月ごろの新しいごみ収集人の仕事バージョンをリリースすることを計画します。
最終バージョンのための最初の生の評価は8月(しかし、これは見当違いの推測です)でありえます。
-- ロバート
0185デフォルトの名無しさん
NGNGGCの実装はやっぱり大変だったということなんだろうか?
0186デフォルトの名無しさん
NGNG0187デフォルトの名無しさん
NGNG前スレでなんかやってた人が居た。
http://calua.sourceforge.net/
Lua wrapper っぽ
0189デフォルトの名無しさん
NGNG01901
NGNG0191デフォルトの名無しさん
NGNGa = 3 % 2
0192デフォルトの名無しさん
NGNGのAngelScript
C言語ライクですな。
構造体(Obj)はCの方から作成
0193デフォルトの名無しさん
NGNGmath.modを使えってことじゃない?
0194デフォルトの名無しさん
NGNGstrongly typedという特徴を見逃してはいけないな!
0195デフォルトの名無しさん
NGNGありがとうございます。
実はPlua(PalmLua)でやってます。
PluaはLua4.0相当だそうです。
Plua remainderで検索していたら、下記のページが見つかり、
http://archive.neotonic.com/archive/lua-l/browse_frm/thread/1619/6708
そして、ここを見ると、modが関数として用意されていました。
http://www.lua.org/manual/4.0/manual.html#6.3
結局
a = mod(3, 2)
でできました。
0196デフォルトの名無しさん
NGNG0197デフォルトの名無しさん
NGNG0198デフォルトの名無しさん
NGNGソースまとめてコンパイルするだけじゃだめなの?>>196
0199デフォルトの名無しさん
NGNG__asmとか使ってる所をGCC用に書き換えないと。
0200デフォルトの名無しさん
NGNGしってた?
俺はさっき知った・・・。
0201デフォルトの名無しさん
NGNGコルーチンとかスタックとかのバグフィックスが行われたらしい。
んで、5.1はまだ半年先らしい。
0202デフォルトの名無しさん
NGNGそれって5.0に↓このパッチを当てたものと同じですか?
ttp://www.uri.sakura.ne.jp/~cosmic/yuno/lab/lua5_bugs_ja.html
0203デフォルトの名無しさん
NGNGhttp://lua-users.org/lists/lua-l/2003-12/msg00026.html
>This version corrects all known bugs in Lua 5.0, that is, those listed in
>http://www.lua.org/bugs.html
0205デフォルトの名無しさん
NGNG0206デフォルトの名無しさん
NGNG0207デフォルトの名無しさん
NGNGhttp://www.gorlice.net.pl/~rybak/luaide/
誰かもう使っておられますか?
0208デフォルトの名無しさん
NGNGというか、自分のアプリに組み込んだLuaのデバッグとかできないかなぁ?
0209デフォルトの名無しさん
NGNG0210デフォルトの名無しさん
NGNGこれの使い方がわからんのですが
IDE上で実行とかブレークポイント貼るのとかどうやんの?
メニュー覗いても該当する項目ないし
F5押しても何も起きないし
もしかして、見た目だけとか・・・?
0211デフォルトの名無しさん
NGNG>もしかして、見た目だけとか・・・?
やっぱりねぇ。なんとなくヤバそうな雰囲気だったから
誰か試してくれないかなぁ…って(大笑い)
ゴメン。
0212210
NGNGミミ:::;,! u `゙"~´ ヾ彡::l/VvVw、 ,yvヾNヽ ゞヾ ,. ,. ,. 、、ヾゝヽr=ヾ
ミ::::;/  ゙̄`ー-.、 u ;,,; j ヾk'! ' l / 'レ ^ヽヘ\ ,r゙ゞ゙-"、ノ / l! !ヽ 、、 |
ミ/ J ゙`ー、 " ;, ;;; ,;; ゙ u ヾi ,,./ , ,、ヾヾ | '-- 、..,,ヽ j ! | Nヾ|
'" _,,.. -─ゝ.、 ;, " ;; _,,..._ゞイ__//〃 i.! ilヾゞヽ | 、 .r. ヾ-、;;ノ,.:-一'"i
j / ,.- 、 ヾヽ、 ;; ;; _,-< //_,,\' "' !| :l ゙i !_,,ヽ.l `ー─-- エィ' (. 7 /
: ' ・丿  ̄≠Ξイ´,-、 ヽ /イ´ r. `ー-'メ ,.-´、 i u ヾ``ー' イ
\_ _,,......:: ´゙i、 `¨ / i ヽ.__,,... ' u ゙l´.i・j.冫,イ゙l / ``-、..- ノ :u l
u  ̄ ̄ 彡" 、ヾ ̄``ミ::.l u j i、`ー' .i / /、._ `'y /
u `ヽ ゙:l ,.::- 、,, ,. ノ ゙ u ! /_  ̄ ー/ u /
_,,..,,_ ,.ィ、 / | /__ ``- 、_ l l ``ーt、_ / /
゙ u ,./´ " ``- 、_J r'´ u 丿 .l,... `ー一''/ ノ ト 、,,_____ ゙/ /
./__ ー7 /、 l '゙ ヽ/ ,. '" \`ー--- ",.::く、
/;;;''"  ̄ ̄ ───/ ゙ ,::' \ヾニ==='"/ `- 、 ゙ー┬ '´ / \..,,__
、 .i:⌒`─-、_,.... l / `ー┬一' ヽ :l / , ' `ソヽ
ヾヽ l ` `ヽ、 l ./ ヽ l ) ,; / ,' '^i
0213209
NGNGためしたよ。プロジェクトを新規作成しないと、
うんともすんともいわんみたい。
プロジェクト上でプログラムをかくべし。
う〜ん、自分のDLLをwxLuaと、LuaIDEでよませてみたけど、
LuaIDEはなんかいまいち、うまくいかんかった。
終了時にIDEごとおちちゃう。原因は特定してないけど、
DLL作成時のコンパイルオプションがIDEのコンパイルオプションが
ちがうんだろう。
DLLは5.0.1作成したんだけど、IDEは5.0.0かもしれない。
wxLuaは、実行したプロセスが落ちないようになってしまったけど、
これはなんとかなりそう。
0214デフォルトの名無しさん
NGNGあとLuaからCの変数にアクセスする方法も分かりません。
0215デフォルトの名無しさん
NGNGお手数おかけしました。
IDEのWEBでは一応5.0.1対応とは言っておりますが
その辺りは、結構いい加減なんでしょうね。
(管理人のオッチャンからアクセス規制をくらって
おりまして、ご返事が遅れました。
悪しからず。)
0216デフォルトの名無しさん
NGNG上位値とクロージャを。自分の変数を持つ関数かな?
schemeとかocamlとかperlとかにはあった気がする。lispが発祥だとかperlの本にあったなぁ。
--
newgreeting = function(a) --a:上位値
return function (b); print(a..", "..b..".") end --クロージャ
end
gr1 = newgreeting("Good morning");gr1("Emily");gr1("Mike")
gr2 = newgreeting("See you");gr2("Emily");gr2("Mike")
-- もうひとつ 上位値の変更
newcounter = function ()
local cnt=0 --上位値
return function ()
cnt = cnt+1
return cnt
end
end
cnt_a = newcounter()
cnt_b = newcounter()
print(cnt_a())
print(cnt_a(), cnt_b())
print(cnt_a())
print(cnt_a(), cnt_b())
print(cnt_a())
print(cnt_a(), cnt_b())
結果は省略
0217デフォルトの名無しさん
NGNGすごい
や・・やるなぁ・・・。
0218デフォルトの名無しさん
NGNGありがとう。
よくわかりました。
0219デフォルトの名無しさん
NGNGその辺りマニュアル読んだだけでは理解できなかったので勉強になりました。
既出かもしれないけど、「FarCry」にLuaが採用されてますね。
ttp://www.farcry-thegame.com/uk/technology.php
体験版をインストールしたら、Scriptsフォルダの中に拡張子が".lua"の
テキストファイルが大量に入っていたので驚きました。
ゲームプログラマさん達には参考になるかも。
0222デフォルトの名無しさん
NGNGa = {1, 2, 3, 4, 5, 6}
b = {}
table.foreach(a, function (v) table.insert(b, v*2) end)
print(table.concat(b, "\n"))
0224デフォルトの名無しさん
NGNGカリー化関数curry()を作る。とかw
% lua
Lua 5.0 Copyright (C) 1994-2003 Tecgraf, PUC-Rio
> function curry (f, v) return function (...) return f(v, unpack(arg)) end end
> function add (a, b) return a + b end
> print(add(1,2))
3
> inc = curry(add, 1)
> print(inc(3))
4
> function add3(a, b, c) return a + b + c end
> foo = curry(add3, 1)
> print(foo(2, 3))
6
> bar = curry(foo, 2)
> print(bar(3))
6
0225デフォルトの名無しさん
NGNGC風に
foo=0x2B
こんなかんじで書きたいんですけど。
0226デフォルトの名無しさん
NGNGサンプル嫁
0227デフォルトの名無しさん
NGNGサンプルはどこ?
foo = tonumber('2B', 16)
これ?
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNG0230デフォルトの名無しさん
NGNGLua好きにナターヨ
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGOSレベルのスレッドなのかな?って話なんだけど
0233デフォルトの名無しさん
NGNGCoRoutineのこと?
それとも、スレッドが利用できる拡張でもあるんだっけ?
0234デフォルトの名無しさん
NGNGlua_newthreadの話だよね?
lua_resumeはコルーチンが中断されたり実行終了したら、
呼び出しから戻るってかいてあるからOSレベルのスレッドは
自前で実装してその中で呼ぶようにしてってことじゃない?
0235デフォルトの名無しさん
NGNGそそ
コルーチンは、終わるかyield呼ぶまでだと書いてあるんだけど、
newthreadの方は、特に書いてないんだよね
0236デフォルトの名無しさん
NGNG0238デフォルトの名無しさん
NGNGLuaのコルーチン=lua_newthread+lua_resume(+lua_yield)だよ。
lua_newthreadは新しいコルーチンを生成する関数。
lua_newthread()とlua_resume()を使ったサンプルは前スレにある。
threadって付いてるけどOSのスレッドとは一切全く関係ない。
0239デフォルトの名無しさん
NGNG0240デフォルトの名無しさん
NGNG結局、スクリプトを実行(dofileとか)したら、
終わるまで帰ってこないって解釈で良いのかな?
裏で何かしたかったら、(処理系もしくはOSの)スレッド使えと
0241デフォルトの名無しさん
NGNGlua_resume使えば、Luaスクリプト側でyieldすれば戻ってくるよ。
もう一回lua_resumeするとyieldしたところから実行が始まる。
協調型マルチスレッド(=コルーチン)と言ったところか。
別にOSのスレッド使うのも有りかもしれんけど、Luaってスレッドセーフだっけ?
0242デフォルトの名無しさん
NGNGとりあえずlua_resumeが1を返しても正常終了かエラーで中断かわからん
0243デフォルトの名無しさん
NGNG・その文字列が"cannot resume"を含まなければ、スクリプト実行エラー
・そうでなければ、既に実行が終わったものをlua_resumeしようとした時のエラー
とかしてる。もっとうまい方法あるかな?
lua_resumeが正常終了した後、もう一度lua_resumeを呼べるかどうかを調べる方法は、
ソースを見る限りなさゲ?(もう調べたころの記憶が曖昧だけど…)
0244デフォルトの名無しさん
NGNGlua_pushliteral(L, "__metatable");
lua_pushvalue(L, methods);
lua_settable(L, metatable);
ってあるんですけどメタテーブルのメタメソッド"__metatable"って
何のために設定するんでしょうか?
リファレンスのメタテーブルのとこ見ても
このメタメソッドについては何も書いてないし…
0245デフォルトの名無しさん
NGNGuserdata:print()
みたいにC側からライトユーザーデータを渡して
それに対して関数を呼んだりしたいのですが
ライトユーザーデータだとメタテーブルを
持てないのでできません。
なにか良い方法はないでしょうか?
0246800get
NGNGenv={
b = "test",
c = { "test" }
}
C側から値を取得しようとしてます。上の中で、
aはlua_getglobalのあとにlua_tostring、
cはリファレンスのテーブルを巡回する例と同じようにできたのですが、
bができません。
どなたかご教授ください。
0247デフォルトの名無しさん
NGNG0248246
NGNG今から宣言しておく。
8 0 0 は オレ が 獲 る !
0249デフォルトの名無しさん
NGNGこの例でcが取れてbが取れないって
ネタとしか思えん。
0250デフォルトの名無しさん
NGNG0251デフォルトの名無しさん
NGNGcのテーブルを巡回するほうが難しいだろ!
0252デフォルトの名無しさん
NGNGソースみせて。
たぶん一発で回答がでるよ。
■ このスレッドは過去ログ倉庫に格納されています