127 :
DNS未登録さん:2007/06/18(月) 16:21:26 ID:qQekVywy
Linux上にIF/Prologで構築されているようですが、
WindowsでP#でもうまくいくでしょうか?
およそ一年ぶりの書き込みになります。ageていただかなかったら
永久に気が付かなかったかも知れません
>>127 P# ! 知りません。3年くらい前にちらっとそんな話題が
あったような記憶があるのですが、マイクロソフトと関係が
あるのですか。
>>126 XMLでのデータ授受は有力ではないでしょうか。
私はSOAPの詳細を知らないので気の利いたコメントは
できませんが、Prolog以外の言語に対してサーバーの
立場を取るとなると、クライアントの処理言語に対して
Prologの解析系を持てというのは現実的でないでしょう。
Prolog-XML変換はどこにでもあるのだから、Prolog側で
XML変換してあげればよい。
実際私は、XBRL(XMLベースのビジネス用通信形式テンプレート)と
Prolog項の変換の仕事をしたばかりです。
1980年代のProlog資料をまとめてあるサイトないかな。
最近、Erlang との連携を始めました。TCP/IP経由で
Erlangをさらにサーバに見立てて、並列(平行)処理を
委託します。ただ今のところEUC-JPの漢字処理が
うまくいかず、Erlang側のプログラムはあまり凝った
ものが作れません。漢字処理が問題がある場合、
ソースに遡れば大概は上手くいくことが多いのですが、
Erlangはconfigure->make->make install で8時間くらい
かかる代物で、とても私が手を出せるものではありません。
132 :
訂正:2007/10/31(水) 18:48:23 ID:???
ただ今のところ -> ただ、今のところ
漢字処理が問題がある場合、 -> 漢字処理に問題がある場合、
何故にErlangが出てきたかという話をしておきます。
これはスケジューリング問題と関係があります。
Prologはスケジューリング問題の解決に最適な言語ですが、
これは「勤務表」のようなあまり、時間的な要求の厳しくない
領域を対象とした場合です。
ライン制御のような部分でのスケジューリングとなると
コードとしては洗練されたものになりますが、やはり、
GCによる遅延の問題がある。ラインの流れに追いつけなく
なる可能性があります。これを回避する方法はやはり、
その遅延が致命傷になる部分だけは切り離して、Prolog外で
処理するほかない。
そこで、Prologからのコード変換が容易で、小プロセスを
生成できて、並列による非同期処理が書きやすいErlangが
でてくる。
今のところは、Prolog/Erlang変換の研究の域をでませんが
相当に有望なのではないかと思います。
INAP'96で日本では初めてのErlangチュートリアルが
あったのですが、当時10年の歴史がある言語なのに、
ほとんど知ってる人いなかったですね。最近の流行は
隔世の感ありです。
Wijaという環境上に構築されるオーバーレイGHCというものが
あります。例の未踏ソフトの一つなのですが、PrologとGHCの
違いはありますが、やりたいことはたいへん似ているようです。
残念ながらうまく起動できなくて、今のところ私のサーバーと
混在できていません。今週はこれがテーマ。
>>135 Wijaの方は進んで以内が、昨日、erlangサーバがevalしていなかったのを
ム板のErlangのスレのレスでのやりとりで、方法が分かったので書き換えて完成。
幸せ。
これまでは関数の機能番号と引数を一行づつ渡していた。functorで分解した
ような状態で。
137 :
DNS未登録さん:2008/06/05(木) 10:51:17 ID:gGkN7ojL
Erlangサーバについてですが、
Prologサーバからさらに
Erlangサーバに要求をだすということですよね。
Erlangプログラムのuploadはどうやるの?
>>137 Prologクライアントから直接呼ぶこともできます。
Prolog -> Erlang のバイナリーファイル転送は作ってないので、
そこは FTP か Samba のお世話になる。
upload_and_eval(ErlangServer,ErlangModule,Eval_Function) :-
cp(ErlangModule.erl,ErlangServer::ErlangModule.erl),
ErlangServer :: (c:c(ErlangModule) -> _),
ErlangServer :: (ErlangModule:Eval_Function -> X).
ディレクトリはそれぞれホームディレクトリだとして。
すみません。
upload_and_eval(ErlangServer,ErlangModule,Eval_Function,X) :-
でした。
書き直します。
upload_and_eval(ErlangServer,ErlangModule,Eval_Function,X) :-
cp(ErlangModule.erl,ErlangServer::ErlangModule.erl),
ErlangServer :: (c:c(ErlangModule) -> {ok,ErlangModule}),
ErlangServer :: (ErlangModule:Eval_Function -> X).
upload_and_eval(ErlangServer,ErlangModule:Eval_Function -> X) :-
cp(ErlangModule.erl,ErlangServer::ErlangModule.erl),
ErlangServer :: (c:c(ErlangModule) -> {ok,ErlangModule}),
ErlangServer :: (ErlangModule:Eval_Function -> X).
の方が分かり易いか。
>>141 コピー元は自分だからPrologサーバで
cp(ErlangModule.erl,ErlangServer::ErlangModule.erl),
を実行すると、Prologサーバのワーキングディレクトリから
ErlangModule.erlファイルをコピーしようとするはず。
これは具合が悪いから、cpはこの述語から切り離す他ないの
ではないか。
>>142 uload_and_eval(Myhostname,ErlangServer,ErlangModule:Eval_Function -> X) :-
cp(Myhostname::ErlangModule.erl,ErlangServer::ErlangModule.erl),
ErlangServer :: (c:c(ErlangModule) -> {ok,ErlangModule}),
ErlangServer :: (ErlangModule:Eval_Function -> X).
一引数増やしました。
Wijaの オーバレイ GHC 使ってみましたが、私のPrologサーバとはまったく違うものでした。
詳しい報告はあとで。
upload_and_eval は長いから u_eval とする。
クライアントノードが c1
Prologサーバが p1
Erlangサーバが e1 として、c1がp1にe1へのu_eval()を委託する場合.
モジュールはmy 関数はappend/2とする。
?- p1::u_eval(c1,e1,(X は my:append([a,b],[c]))).
X = [a,b,c]
yes
p1を経由せず直接質問するなら
?- u_eval(c1,e1,(X は my:append([a,b],[c]))).
X = [a,b,c]
yes
となる。大分すっきりした。
ErlangサーバにDownloadさせる仕様にできないか?
Erlangサーバの関数を d_eval() が モジュール erlang_server にあるとする。
?- X は e1::erlang_server:d_eval(c1,my:append([a,b],[c])).
これで良さそうだが、Erlang側でd_eval() を解析評価する時に、
append/2が先に評価されてしまって多分うまくいかない。
コンパイルするべきモジュールを引数に分離して、しかも評価される関数を
文字列として渡してe_evalの中でさらに評価させる。
?- X は e1::erlang_server:d_eval(c1,my,"my:append([a,b],[c])").
すっきりしない。
二回に分離して質問するところを、強引に一回に納めた感じだ。
crontabなんかで質問を予約する場合もサーバにリクエストするんだよね。
どんなコマンドになるの?
Prologインタプリタの質問で予約する。
毎日自分のマシンで12時に上記のlistingを行うには、
?- 予約(毎日,12,0,(tell(foo),listing,told)).
yes
yahooというドメイン上のサーバでlistingを行うには、
?- 予約(毎日,12,0,yahoo :: (tell(foo),listing,told)).
yes
予約自体をyahoo上のサーバにするには、
?- yahoo :: 予約(毎日,12,0,(tell(foo),listing,told)).
yes
>>153 の場合はポート番号は明記されていないからDefault値が
使われる。ポート番号がDefault値以外の場合は、サーバを
(_ドメイン:_ポート番号) :: で表現する。
長い間関数評価述語として"is"の代わりに"は"を使ってきました。
しかし、Erlangサーバが充実してきたため、表記法を改めて、
今後は"<-"に統一しようと思います。
?- X <- append([1],[a,b]).
X = [1,a,b];
no
ですね。
失礼。適切でなかった。統一してというのではなく、
Erlangの変数へのunifyが "->" なので
これはPrologの評価述語であるということを明確にするため、
"<-"を採用しました。
そもそもPrologに P->Q1;Q2 なんていう構文があるのが間違ってる。
四人一首問題のつづきです。
そもそも、サーバーから一音、一音、取り手に送り出すのはどうすればよいか?
取り手が突っつけば簡単だがそれでは本当らしくない。
サーバーが送り出す。相手は、取り手付属のサーバー。
この取り手付属のサーバーと取り手はこの歌の一音情報を
共有する必要がある。
Erlangを関数呼び出しする場合、
関数評価述語として「は」を使っているようだが、
単純に中置演算子 erlang とした方がいいんじゃないかな。
>>159 _値 erlang _erlang関数 ですか。
...,
A は _式1,
B は _式2,
C は _式3, ... ,
で、ある時 _式2 を _erlangサーバ::_モジュール:_eralang関数,
として評価する。こういう想定がありうるとするとやはり「は」に
統一されている方が好ましいように思います。erlangであるかどうかは
_erlangサーバの定義に係かってくることになります。
サーバ 一単位あたりのプログラムサイズはどのくらいになるの?
>>161 最小だと4MBくらいかな。
最初にスタックサイズを指定して起動するので、
そのデフォルト値をどう書き換えるかという問題に
なります。
163 :
DNS未登録さん:2011/02/28(月) 08:43:35.41 ID:TEJDJ3BB
swi-prologを商用利用すると
どれぐらいお金いるんだろう?
165 :
DNS未登録さん:2011/03/03(木) 21:18:30.51 ID:1LopfZ9I
166 :
DNS未登録さん:2011/03/03(木) 21:20:24.17 ID:1LopfZ9I
Non-free (open or proprietary) software can be produced using SWI-Prolog, although contributed pure GPL components cannot be used.
作成したものを公開すればOKってことなのか?
この翻訳から離れて、私が勝手に理解して
いるつもりになっているものは、
利用者からソースコードの開示を求められた
時には公開しなくてはならない。というこの一点。
以前は商用でソースの開示は考え難いことだったが、
現在ではごく当たり前のこと。商用であっても、
GPL、LGPL規約に「違反しない限り」課金されることはない。
SWI-Prologもこの範囲内にあるソフトだと思う。
?- prologサーバ :: 生きている.
yes.
?-
?- prologサーバ :: 何してる(_何してる).
_何してる = 暇してる.
yes
?-
Erlang が異様に流行りだしました。もう一度、PrologからErlangを呼び出す
インターフェイスの話をまとめてください。
Erlangてアーラン?
test
173 :
DNS未登録さん:2012/10/17(水) 10:23:46.83 ID:YFrysNEg
ム板でスレたて荒らしが現れた所為で、最近たてられたスレが全部DAT落ち処分されている。
ここのように平和なスレでも書き込むことはもちろん、時々はageておいた方がいいかも。
Javascript上にPrologを建てて、
Prolog(Javascript) <-> Prolog <-> Prolog(Javascript)
という制御の勉強を復活させようと思います。
以前作っていたものは、ノートパソコンのディスククラッシュとともに
ほとんどが消え去ったので、もう一度作り直さなくてはならないから、
少し時間をください。
永くIF/Prologを使ってきたこのサーバーもSWI-Prologへの引越しが近くなってきた。
えっちぃ絵をリクエストすると誰かが描いてくれるかもしれない素敵なスレ【R-18】
http://hayabusa.o p e n 2ch.net/test/read.cgi/news4vip/1423739321/