X



Lisp Scheme Part40 [転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん垢版2015/03/16(月) 13:45:52.92ID:EEYZoZ1i
Common Lisp、SchemeをはじめとするLisp族全般のスレです

■前スレ
Lisp Scheme Part39
http://peace.2ch.net/test/read.cgi/tech/1408017352/

■テンプレ
ttp://wiki.fdiary.net/lisp/

■関連スレ
【入門】Common Lisp その11【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1411307361/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
http://peace.2ch.net/test/read.cgi/tech/1272469779/
【Lisp】プログラミング言語 Clojure #3【JVM】
http://peace.2ch.net/test/read.cgi/tech/1380333808/
【魔法】リリカル☆Lisp【言語】
http://peace.2ch.net/test/read.cgi/tech/1183396621/
0355デフォルトの名無しさん垢版2016/03/27(日) 18:57:11.14ID:0WFKXpdM
最近は、RHがclojureでうまく整理して、関数型含めてjsに広まる概念もあったりする。

逆の流れでいうとtransducerをhaskellで説明しようとしたけどちょっと足りない話。
https://reddit.com/r/haskell/comments/2cv6l4/clojures_transducers_are_perverse_lenses/

いまだとshapeless使えば静的な型検査通る可変な型扱うコレクションつくれるらしいので、上のやつみたいなのも着実に減っててるとは思う。
https://github.com/mandubian/scaledn

結局のところC#などにもそうやって取り込まれてるんじゃないかなと。
react(.js)もphpのテンプレートエンジンの置き換えからだそうで。
0358デフォルトの名無しさん垢版2016/03/27(日) 21:24:01.32ID:0fEHBexO
>>357
・特に [ ] のあたりの文法が違うのでLispの資産を移行できないから
・Lisp の ( ) の対応に慣れた人には、罠のようにはりめくらされた文法不一致があるから
・S式だけで構成できないから
・再帰末尾最適化に制限があるから
0359デフォルトの名無しさん垢版2016/03/27(日) 21:47:19.72ID:/EOuwLtH
>>358
1の[]に関しちゃ大昔のスーパー閉じ括弧の存在を忘れてもらっては困ると思うしschemeの一部処理系も括弧の代わりに表現力の強調で括弧と同等に扱う等に導入してるからそこまで嫌わんでもと思う
2の部分は許容してもらうしかないんじゃないのかなぁ、まぁ否定はしない
3は1と2の事だよね?
4はLispというよりscheme好きの人なら反発するのとてもよくわかる。(jvm側の問題でもあるけど)

[]に関しちゃむしろ良く出来てると思うのだよね、3が許せないとどうしようもないけど。

リーダーマクロが普通に扱えないって言う意味で怒ってるのかと思ったのでちょっとびっくりしました。>>358
0360デフォルトの名無しさん垢版2016/03/30(水) 01:19:52.13ID:4Lxy3Poc
>>358
> ・再帰末尾最適化に制限があるから

「再帰末尾」じゃなくて「末尾再帰」
元の英語は "tail recursion"
0361デフォルトの名無しさん垢版2016/03/30(水) 11:18:07.37ID:7zl3Df3d
> ISLisp でggrと「ISLISPを使うべきでないたった1つの理由」がトップに並ぶ哀しさよ
これ根本的に間違えてんね.ユーザーいないし訂正する人もいないからこのページが消滅するとよいね
0364デフォルトの名無しさん垢版2016/04/01(金) 23:04:20.67ID:cY7z571b
> 「実行時情報」が使えないということは,つまり,自分で定義した関数によるマクロの展開は行えない,ということです.
ココ。つまりこのページの主張全部
0366はちみつ餃子 ◆8X2XSCHEME 垢版2016/04/02(土) 04:27:14.45ID:4LcO4yg1
仕様から関連しそうな箇所を抜き出してみた。

> 4.8 定義演算子
> 定義形式によって定義される名前は、最上位有効範囲全体で使うことができるが、
> ISLISP テキスト単位における実行準備された最上位形式は、左から右に順に実行される。
> (略)
> (defun function-name lambdaform*) → <symbol>
>
> defun 形式は、 function-name を、関数名前空間の識別子として定義する。 function-name は、 (lambda
> lambda-list form*) と等価な関数オブジェクトに束縛される。

> 8. マクロ
> (略)
> マクロは、実行準備時に展開される。 いかなる実行時情報も使えない。使用可能な操作は、単純なデー
> タ構造の生成及び処理に制限される。すなわち、(端末への入出力のような) 環境への副作用、(記号の属
> 性リストの変更のような)外部的にアクセスできるデータ構造への副作用、及びマクロ形式自身への副作用
> を起こす操作は禁止する。

「4.6 評価モデル」も関連するけど長くなるので要約。
・ まず実行準備される
・ 実行準備が完了してから実行される
・ 実行準備完了時点でマクロ展開は終わっている
・ 実行準備のための処理は処理系依存

断言できるほどはっきりしてないけど、関数の定義名はマクロ展開時にも見えてて、
関数名と関数オブジェクトを結びつけるのは「実行」だと解釈するのが妥当だと思う。
マクロ定義中にユーザー定義関数を使えないとする解釈を私も支持する。

ただ、全体を通して見ると副作用のない (プログラマが定義した関数を含む) 関数なら使えると想定しているっぽい雰囲気
はあるような気がする。
0367363垢版2016/04/02(土) 07:29:47.03ID:A2SWmCys
>>364,365,366

みなさん情報ありがとう。
ISLISPの日本語の仕様書はどこかなと思ったら、ここにあった。
http://www.jisc.go.jp/app/pager?id=1759608

ダウンロードしての閲覧禁止って。変な制限かけてるなぁ。
0368はちみつ餃子 ◆8X2XSCHEME 垢版2016/04/02(土) 12:56:38.38ID:4LcO4yg1
>>367
その URL では見れないよ。
URL 中の番号はあなたがアクセスしたときのセッション番号。
文書に固有の番号ではないので、パームリンクとして使えない。
ダウンロード禁止なだけじゃなく、たぶんサーチンエンジンのクロールも避けてるんだと思う。
0371デフォルトの名無しさん垢版2016/04/02(土) 15:51:19.10ID:5+CR+tn7
買ってもらってるから、不公平って話だと思われる。
紙も実費で配れる財源あるといいんだけどね。

isoは販売になってるけど、他団体と共同でたまに公開されてるのがある。
草稿は公開してるところもある。
0373デフォルトの名無しさん垢版2016/04/02(土) 16:12:01.04ID:5+CR+tn7
isoやansiよりはjisの方がweb公開進んでるのだけど、
ecmaならecmascript(js)やclr(.net)みたいに公開されるのか。
0374はちみつ餃子 ◆8X2XSCHEME 垢版2016/04/02(土) 17:41:26.10ID:4LcO4yg1
日本の法律だと JIS 規格に著作権が認められるかどうかははっきりしない。
総合的には認められないとする説の方が有力らしいんだが、
ISO は規格の著作権を主張してるからそれに加盟してる JISC も倣うしかなくて、
間をとって閲覧だけは無料という曖昧なところでぼやかしてるらしい。
0375デフォルトの名無しさん垢版2016/04/02(土) 18:45:29.01ID:8BHbSdoO
工業規格は事実上の業界標準を後追いで規格化したのがほとんどだから、著作権どころか特許が生きてるのが混じってるので注意が必要
0376デフォルトの名無しさん垢版2016/04/02(土) 23:14:35.48ID:1yEjd1gy
> 366
> 断言できるほどはっきりしてないけど、関数の定義名はマクロ展開時にも見えてて、関数名と関数オブジェクトを結びつけるのは「実行」だと解釈するのが妥当だと思う。

入手できたISLISP Working Draft 23.0をベースにして述べるが,その理屈だと備え付けの関数も展開には使えないように思える.
備え付け関数もユーザ定義の関数もpreparation for executionの間に実行可能という記述はない.
不可能という記述もない.(定義はしないとある)

仮にユーザ定義の関数は使えないとしよう.
ローカル関数 (flet labels)が,defmacro 内で使えないようには見えないのでこれで対処できる.
また,マクロは使用場所に先行して定義があることが必須とあるということは,ユーザ定義のマクロは使えるように見えるので,補助関数の所を補助マクロとするのも良いだろう.
CommonLispでもマクロ展開の補助でユーザー定義関数の利用は必須ではないし,利用するには評価フェイズを合せなくちゃならない問題がある.(ISLISPはこれを回避したのかもしれない)
これをもって「ISLISPを使うべきでない」とするのは誇張が過ぎるし,真に受ける者が出るとしたら害悪だろう.
0377デフォルトの名無しさん垢版2016/04/03(日) 00:12:06.32ID:TLDHNLo8
そのページの害悪よりも、isLispの素晴らしさが伝わるようなページが
検索トップに来ないことの方がずっと問題だと思うけど
0378はちみつ餃子 ◆8X2XSCHEME 垢版2016/04/03(日) 01:50:33.42ID:KHszJMdl
>>376
「実行準備」「実行」の繰り返しがどういう単位なのかっていう、フェイズの分離の仕方の問題だよな。
ひとつの式ごとなのかプログラム全体にわたってなのかでも解釈が違ってくる。

まあ最大限に安全な方向に見積もって未定義だと解釈しても、
それで ISLISP の有用性が全部失われるわけではないということには賛成できる。
あの記事はよくある誇張した煽り記事だろ。 センセーショナルなタイトルをつけてるだけで大したこと言ってない。
しょうもない記事が上位にきてしまう程度に ISLISP に関する記事が少ないってだけ。
0379デフォルトの名無しさん垢版2016/04/05(火) 19:32:30.73ID:wN+QNOe5
ISLispを普及させるために必要な10のこと
・ISLispBoxを無償提供する
・ISLisp Hyperspecを無償提供する
・SICPをISLispで書き換える
・On ISLisp、Little ISLisper、Land of ISLispを出す
・ISLisp for Dummies、すごいISLisp楽しく学ぼう!も
・WhyのISLisp感動的ガイドを公開する
0382デフォルトの名無しさん垢版2016/04/07(木) 02:51:00.20ID:J/4BCUlz
>Lispを普及させるために必要なこと
括弧が少ない言語の方が好まれる傾向にある
よって括弧が一切存在しないLispが誕生すれば爆発的に普及するだろう
0384デフォルトの名無しさん垢版2016/04/07(木) 13:28:18.97ID:bXWnnDCw
言語で使う括弧の量と、括弧打つのが面倒な場面の数ってあんま関係ないよね。

括弧使う言語を書いてるときに面倒なのは、今書いた式を引数にして別の関数を更に適用しようかとかなったときに、
後に閉じ括弧つけてカーソル前に戻して関数名書いて括弧つけて、ってやるときがほとんどなんだけど、
例: foo(x,y)_ → bar(_foo(x,y)) # "_"はそのときのカーソルの位置
Emacsなら一発で飛べる分、むしろLispの方が楽なときがある。

そういう意味だとOCamlの foo x y _ → foo x y |> bar_ は便利だった。
0385デフォルトの名無しさん垢版2016/04/09(土) 00:31:51.25ID:V5jcD4gz
Lispが普及しないのはEmacsで開発するのが当たり前ってところでしょ?それじゃ新規は増えないよ。
0386デフォルトの名無しさん垢版2016/04/09(土) 01:09:17.67ID:K2fjpu1X
それはいいんだよ
CLやscheme, Racketに比べてISLISPが普及してないのはもったいないよね
という話
0388デフォルトの名無しさん垢版2016/04/09(土) 12:25:09.55ID:RLrf2DHR
>>387
F#は好きな言語ではあるが、C#と比べるとVSの動作が重くてしんどいよ。
型推論が遅いのか構文解析が面倒なのか、自動でエラー箇所表示させると凄く反応が悪くなる。
FParsecとか関数型言語ならではの便利ライブラリ使うとより顕著に。

ISLispはロクな実装無いし真面目に使っている人がいないから、どこが便利でどこに課題があるかも分からんのがね。
0390デフォルトの名無しさん垢版2016/04/10(日) 01:04:07.52ID:FW5ih/4i
smalltalkは普及してないけど、objective-cは普及した
つまり、Lispを普及するには中間言語をcにして、、、
0391デフォルトの名無しさん垢版2016/04/10(日) 01:05:20.48ID:FW5ih/4i
そういえばsqueakがレイヤごとに言語変えるとかどっかでチラと読んだような気がする
0395デフォルトの名無しさん垢版2016/04/10(日) 15:37:29.95ID:1G8jL9C/
Rustは好き。C/C++が引き受ける低レベルな領域に型システムの安全性と利便性を突っ込んでみたっていう発想は良い。

けど、コンパイル時間がコード量から予測しづらい(イテレータやジェネリクスを使ってると特に)のと、
莫大なライブラリを資産に持つC/C++と比べたときの実用性の差を考えると、
潤沢な計算資源があって、比較的優秀な人材が揃えられるところ向け。

Schemeのような、スタンドプレーの生産性を莫大に高める言語じゃあないと思う。
0396デフォルトの名無しさん垢版2016/04/10(日) 16:24:09.38ID:GJqGP9+Q
俺もRust好きだな、ただObjective-Cみたいに言語のはらわたまで触れる(smalltalk由来の部分ね)緩さをもった言語も大好きなんだよな
あとはClojureが好き、これはWebアプリ書いてるとき限定だけど。

LispスレなのにLisp系がClojureとかでスマヌ
0404デフォルトの名無しさん垢版2016/04/15(金) 16:27:17.39ID:SDnTU4FS
Deep Learningライブラリkeras
がニューラルネットワークのグラフ処理と数式処理を組み合わせた
ちょっと気の利いた自動処理をやってくれてたんだけど,バグだらけで
pyrhonで数式処理やるの無茶だしこんなものだろうと思ってたら
最新版で気の利いたグラフ処理を全部削除してきた

数式処理をLisp以外でやるのは,やっぱり無理だったんだな
0406デフォルトの名無しさん垢版2016/04/15(金) 18:27:07.12ID:SDnTU4FS
SymPyはテンソル処理できないし

数式を評価して数値にしないで式のまま扱うには
どうあってもマクロの機能が必須
0407デフォルトの名無しさん垢版2016/04/15(金) 18:29:44.90ID:SDnTU4FS
もうちょっと具体的に言うと
x_iのiも数値じゃなくて数式になってるような処理がmaxima以外じゃできないんだよ
0408デフォルトの名無しさん垢版2016/04/16(土) 09:53:49.06ID:dMPS3Rkb
ややスレ違いで申し訳ないのですが、
Common Lispで記述されてるMaximaのWindows版バイナリの
GCLやSBCL版がDEPの対象からから外さないと動かないのって、
多分fasl絡みだと思うのですけど、これってどうしようもないのでしょうか?
0409408垢版2016/04/16(土) 09:55:12.62ID:dMPS3Rkb
をを専ブラじゃなくってIEで書き込めたぞ
0411デフォルトの名無しさん垢版2016/04/17(日) 12:42:24.64ID:OFPJm6rS
ubuntu subsystemはterminal関連やプロセス情報周りまだ調節してるみたいなので、起動で使ってるととまるかも。

cygwinと違いlinuxのバイナリがwindowsのシステムコールに変換してそのまま動くらしいが、プロセスfork周りとか安定するのかな。

docker for windowsでも結構いろいろ出来るけど、
こちらはファイル連携の効率が鬼門?
0412デフォルトの名無しさん垢版2016/04/18(月) 00:23:19.09ID:7XwxtGPN
schemeでSDL使ってなんかやってみたいのだが
guileでもgaucheでもうまく使えるようになってくれん・・・(´・ω・`)

週末おわったからまた来週までおあずけ・・・
0413デフォルトの名無しさん垢版2016/04/24(日) 20:26:59.87ID:0x0aJXRe
>>374
規格そのものには著作権はない
規格書にはある
JISはお役所っぽいとはいえ
規格書は著作権法の除外対象である
「憲法その他の法令」「告示・訓令・通達等」「判決等」などには含まれない
0415デフォルトの名無しさん垢版2016/04/25(月) 02:32:42.65ID:i2M++PuM
著作権法の保護対象は、思想や感情などを創作的に表現したものだから、規格書が該当する可能性は低いんだよね。
執筆者の思想や感情に染まった創作的な規格書とかアレだし。
0416デフォルトの名無しさん垢版2016/04/25(月) 02:51:04.57ID:UQm4t1FS
規格化されたから安心して使えるよね、ってのが長所だろうに
なぜ規格書を半クローズドにするのか全然意味が分かんないw
パンピーから見て「馬鹿なんじゃねえの?」ぐらいある
0417はちみつ餃子 ◆8X2XSCHEME 垢版2016/04/25(月) 03:49:21.76ID:H1EfbN1H
Wikipedia にもそのあたりの経緯は書かれてる。

https://ja.wikipedia.org/wiki/%E6%97%A5%E6%9C%AC%E5%B7%A5%E6%A5%AD%E6%A8%99%E6%BA%96%E8%AA%BF%E6%9F%BB%E4%BC%9A

公官庁が作ってるとは限らない (つまり原案が民間からの提案による) というのが著作権が保護される根拠になってるな。
でも、規格票やハンドブックの売り上げは規格団体の活動資金であって (原案の) 著作者に還元されてるわけでもないみたいなので、
その点でも説得力に欠ける気がする。
0421はちみつ餃子 ◆8X2XSCHEME 垢版2016/04/25(月) 18:47:45.03ID:H1EfbN1H
>>419
手続き上どうなってるか知らんけど、民間の権利を保護することを理由にしてるのに
権利を移譲させているのなら保護する理由として説得力が欠けることにはかわらん。
0422デフォルトの名無しさん垢版2016/04/25(月) 21:57:50.21ID:RsNFjZ9o
問題は特許の方だったりする
規格化されてる技術でも、民間企業の特許権が放棄・委譲されてない場合があるから注意ね
0425デフォルトの名無しさん垢版2016/05/01(日) 12:07:59.87ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

言語は何でも大丈夫だそうなので、P2P書きたい!って人居ませんか?

Covenantの作者(Lyrise)がそういう人と話したいそうなので、よろしければツイートお願いします
https://twitter.com/Lyrise_al

ちなみにオイラはCovenantの完成が待ち遠しいプログラミングできないアスペルガーw


The Covenant Project
概要

Covenantは、純粋P2Pのファイル共有ソフトです

目的

インターネットにおける権力による抑圧を排除することが最終的な目標です。 そのためにCovenantでは、中央に依存しない、高効率で検索能力の高いファイル共有の機能をユーザーに提供します

特徴

Covenant = Bittorrent + Abstract Network + DHT + (Search = WoT + PoW)

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
7
0428デフォルトの名無しさん垢版2016/06/19(日) 15:31:25.37ID:ZDqZVbmO
Scheme workshopに間に合わなかった論文を投稿できる国際会議って他にないものでしょうか?
0429デフォルトの名無しさん垢版2016/06/19(日) 19:41:59.96ID:TTlCeyJj
elispで"で囲まれる文字列をエディター上で複数行にわたって一行の
文字列を作るにはどうやりますか?
0431デフォルトの名無しさん垢版2016/06/20(月) 03:54:27.98ID:1sGgDOGd
>>428
ACMのプログラム言語系国際会議だとここらへんに
http://www.sigplan.org/Conferences/
https://en.wikipedia.org/wiki/SIGPLAN

Scheme workshopはICFPと併設か
http://conf.researchr.org/home/icfp-2016
http://scheme2016.snow-fort.org/
Submission deadlineJune 24th, 2016

似た時期にやってるSPLASHと併設はアブストラクト提出があるみたいで締め切りがはやそう?
http://www.sigplan.org/Conferences/SPLASH/

POPLが1月、PLDIが6月みたいだけど、この時期は各種言語系の併設少ない

European Lisp SymposiumもACMと共同みたい?だけど
来年は4-6月ぐらいなのかな?
http://www.european-lisp-symposium.org/

そして、ILSの開催はよくわからない
0432デフォルトの名無しさん垢版2016/06/20(月) 09:52:51.85ID:WTi3RfiH
>>430
ということです
0433デフォルトの名無しさん垢版2016/06/20(月) 10:19:02.98ID:UyWTAm1z
例えばリージョンを指定して
(replace-regexp "\n" "" nil (region-beginning) (region-end))
とするとか。
0434デフォルトの名無しさん垢版2016/06/20(月) 10:31:53.16ID:zNtNJydN
こういう改行を自動的にオミットしてくれるraw文字リテラルとか言語によってはあるよね。
0437はちみつ餃子 ◆8X2XSCHEME 垢版2016/06/22(水) 09:59:37.32ID:es+zuR1i
適当なコードをプロファイラ付きで動かしてみれば自分で確かめるのも簡単にできそうに思うが
0438デフォルトの名無しさん垢版2016/06/24(金) 15:03:54.34ID:kFtEs5yG
scheme workshop のホームページが落ちてる
0441はちみつ餃子 ◆8X2XSCHEME 垢版2016/07/11(月) 13:22:30.31ID:lXJnj28H
>>440
doctest ではないけど、同じファイルにテストを書ける方法がある。

SRFI-22 で、 main 手続きがあるとそこをエントリーポイントにする機能があるんだが、
Gauche では -m オプションでモジュール名を指定すると
そのモジュール内にある main (通常は実行されることはない) を実行できる。
ライブラリとして書いたものをスクリプトとしても実行できる仕組みなんだけど、
実際のところそういう使い方は普通はしないので main にテストを書いておくという使い方も出来る。

あるいは、 -F オプションの有無で cond-expand を使って分岐してテスト部分を走らせるという方法もある。
0442デフォルトの名無しさん垢版2016/07/11(月) 13:30:48.11ID:vMXg/Dlp
Clojureだと関数定義にmeta情報としてtestを登録できるけど
Schemeのマクロでtest呼び出し可能なdefine-with-testみたいなの作れないものなの?(あたしゃSchemeいぢった事ないのでわからん)
0445デフォルトの名無しさん垢版2016/07/21(木) 18:52:01.52ID:dtsOUE7n
文字列の取出しや結合を繰り返すベンチだな。
Chez の実装をおおざっぱに見てみたら、文字列はただの配列らしい。
string-append も新しくアロケーションしてコピーするだけ。

https://github.com/cisco/ChezScheme/blob/fe172bfdfbf2f606db611013e7689d6a2b117d5e/s/5_4.ss#L33

文字列が rope ならこの種類のベンチは高速になるはずなんだけど、
それはそれで string-ref などが少し遅くなるという欠点もある。
R6RS は string-ref や string-set! が定数時間と要求してるのでそっちを優先したのかも。
(要求といっても `should` はその処理系でコストが大きかったり他との兼ね合いで難しいようなら無視してよい緩い要求。)

あと、 Chez のこういった基本的な手続きは Chez 自身によってコンパイルはされるが、
C で書かれている場合と比べると遅くなると思う。
C で書かれているライブラリを呼出したら、呼出されている間は C の速度ってことだからな。
それらと比較して多少遅い程度で戦えてるならかなり強いんじゃね。
他の実装がどうなってるか知らんけど。
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況