CommonLisp Scheme Pa ..
[2ch|▼Menu]
511:デフォルトの名無しさん
04/09/26 01:14:43
それって解決になってない気が。
それよりVC++やMingwで動かす話があったはずだけど。

512:デフォルトの名無しさん
04/09/26 03:55:19
>>511
gauche-gl の話しでしょ?
もしかして VC++で使えるって話し?

513:デフォルトの名無しさん
04/09/26 04:26:56
511ではないが、cygwinではなくてMingwで動かす話がある。
あまりうまくいっていないようなので、やるなら自分でやった方がよいかも。

514:デフォルトの名無しさん
04/09/26 05:20:39
("root"
("usr" "aaa.txt" "bbb.txt"
("bin" "perl" "ruby" "gosh")
))

ディレクトリ構造をS式で表したいのですが、上のように
「リストの最初にディレクトリ名をおく」というのを考え
ました。もっといい方法ってありますか?

515:デフォルトの名無しさん
04/09/26 05:29:30
carはディレクトリ名、cdrはそのディレクトリの要素、でどう?
cdrは、listだったときはディレクトリ、atomだったらファイル名。

("etc" ; /etc/
 "fstab" ; /etc/fstab
 "passwd" ; /etc/passwd
 ("namadb" ; /etc/namedb/
  "named.conf" ; /etc/namedb/named.conf
  "named.root")) ; /etc/namedb/named.root

とか

516:515
04/09/26 05:31:02
あ、よくみたら同じことやってる、おれってばか(;´Д`)
もう寝ます…

517:ミミ
04/09/26 06:07:28
>>514
UNIX だけならそれでいいと思う。
Win だとドライブ名がないとだめだね。

("/" "C:" "WinNT" . "Notepad.exe")

絶対パスと相対パスはどう区別するのかな。

518:ミミ
04/09/26 06:09:13
あ、勘違い。
パスを表すんじゃなくって、
ディレクトリ構造を表すんですね。

519:デフォルトの名無しさん
04/09/26 06:32:49
>>515 >>517
ありがとう。絶対パスなので、上の方法で扱ってみます。

次は要素を探索して、その絶対パスを返す手続きです。でも
gaucheのfindあたりでいけそうですね。調べてみます。


520:デフォルトの名無しさん
04/09/26 21:55:24
PLTSchemeで.net を使えるそうなのですが・・・
URLリンク(www.rivendell.ws)
これって使うプロジェクトの直下において
使えばよろしいの?
というかmzSchme,PLT Scheme DrScheme って
なんで名前が3つあるんですかね?関係性が
わからないんですけど・・・

521:ミミ
04/09/26 23:29:19
>>529
> mzSchme,PLT Scheme DrScheme って
MzScheme は Scheme 実装のコア部分
DrScheme は統合開発環境
PLT Scheme は全体の総称かな。たぶん。

522:デフォルトの名無しさん
04/09/26 23:32:42
>>521
お前のキーボードにテンキーついてないだろ

HHKだから俺のにもついてないけどさ

523:ミミ
04/09/26 23:38:14
え、なんか鋭いですね。。。
探偵さんですか。。。

524:デフォルトの名無しさん
04/09/27 00:21:38
>>521
そういうことですか、サンクス。

>>522
え、なんでそうなるの?

525:デフォルトの名無しさん
04/09/27 00:26:56
ふつーは数字入力でわざわざテンキーまで手をのばしたりしないよ。

526:デフォルトの名無しさん
04/09/28 10:43:06
ふつーはレス番号を直接入力したりしないよ。


527:デフォルトの名無しさん
04/09/28 11:15:44
ふつーの人は2ちゃんねるなんてやらないよ

528:デフォルトの名無しさん
04/09/28 20:13:20
ふつーのひとはLispなんてやらないよ。

529:デフォルトの名無しさん
04/09/28 20:59:04
普通のやつらの上を行け

530:デフォルトの名無しさん
04/09/28 22:39:02
そんな実力はありません

531:デフォルトの名無しさん
04/09/29 04:52:42
(ノーマル? 普通のやつ) ; => #t
(ノーマル? (上 普通のやつ)) ; => #f
(ノーマル? (下 普通のやつ)) ; => #f
(アブノーマル? 普通のやつ) ; => #f
(アブノーマル? (上 普通のやつ)) ; => #t
(アブノーマル? (下 普通のやつ)) ; => #t

(equal? (上 普通のやつ) (下 普通のやつ)) ; => ?


532:デフォルトの名無しさん
04/09/29 04:55:37
(ノーマル? 普通のやつ) ; => #t
(ノーマル? (上 普通のやつ)) ; => #f
(ノーマル? (下 普通のやつ)) ; => #f
(アブノーマル? 普通のやつ) ; => #f
(アブノーマル? (上 普通のやつ)) ; => #t
(アブノーマル? (下 普通のやつ)) ; => #t

(equal? (上 普通のやつ) (下 普通のやつ)) ; => ?



533:デフォルトの名無しさん
04/09/29 07:15:56
だが気を付けたまえ

534:デフォルトの名無しさん
04/09/29 23:24:51
アブノーマルの行きつく先はAranskだ

535:デフォルトの名無しさん
04/09/29 23:54:01
MIT Schemeというので自作のDLLを呼びたいのですが
なかなかそういうサンプルソースが見つかりません
FFIとかで検索してみたのですが、なんか良いサンプル
ないですかね?付属のドキュメントは何か概要ぐらいしか
書いていない感じなんです



536:ミミ
04/09/30 00:31:23
このサンプルは見ました?

(define set-window-title
(windows-procedure
(set-window-text (window hwnd) (text string))
bool user32.dll "SetWindowText"))

(set-window-title my-win "Hi")
=> #t
;; Changes window's title/text

537:デフォルトの名無しさん
04/09/30 01:04:39
>>536
見ました
それだけみてもよくわかんないんです
そもそもエラーが出るし・・・
;Syntactic keyword may not be used as an expression: define
とか

538:デフォルトの名無しさん
04/09/30 23:51:48
いつのまにかgaucheがmingwでコンパイルできるようになっとる。
前はできんかったのに。mingwをバージョンアップしたからだろうか。(--;

539:デフォルトの名無しさん
04/10/01 00:12:12
shiroさんが業を煮やしてちょこっと進めた

540:デフォルトの名無しさん
04/10/01 02:09:58
おぉーーー

541:デフォルトの名無しさん
04/10/01 08:56:57
ACLってVisualStudioより高いですか。
ぐぐってもわからないってことは、相当な値段でしょうけど、、

542:デフォルトの名無しさん
04/10/01 10:32:44
>>541
前スレからコピペ。
----------------------------------------------------


715 :デフォルトの名無しさん :04/06/28 23:09
ACL アカデミックとかじゃなくて普通に商用に使うために買うといくらするの?


716 :デフォルトの名無しさん :04/06/29 02:30
このスレの Part 8 で紹介されていた URL に $599 という価格があるんだけど、
URLリンク(www.franz.com)

これって、アカデミック・ディスカウントなの?
そうは思ってなかった。
教育関係なら、ここからさらに割り引かれるのかと思ってました。

ご存知の方おられませんか?


543:デフォルトの名無しさん
04/10/01 10:33:14
続き
----------------------------------------------------
717 :デフォルトの名無しさん :04/06/29 08:23
先日のFranzセミナーでもらった価格表によると…

Windows/Linux/FreeBSD/MacOS X版
Professional 750,000 (395,000)
Enterprise 1,400,000 (795,000)
Platinum 2,000,000 (895,000)

UNIX (Sun, IBM, HP, Compaq)版
Professional 1,300,000 (520,000)
Enterprise 2,000,000 (1,040,000)
Platinum 2,750,000 (1,200,000)

…高い… orz

718 :717 :04/06/29 08:24
あ、括弧の中はアカデミック価格ね。

544:デフォルトの名無しさん
04/10/01 10:40:04
flatline 氏の『on Lisp』翻訳、24/25章まで進んだようです。いよいよProlog。
URLリンク(user.ecc.u-tokyo.ac.jp)

ちなみに、進振りで志望に通ったらしい。おめでとうございます。

545:541
04/10/01 12:01:02
>>542 >>543
あ、ありがとうございます。
WindowsでProfessionalだと、75万円ですか、、そもそも比較の対象ではないですね ... orz

しょーがない自分で作るか(嘘)


546:デフォルトの名無しさん
04/10/01 13:47:54
>>539
shiroさんにもWindowsの良さをもっと解って欲しいな
バイナリ配布形式に対応してActivePerlみたいにsetup.exeから
インストール出来るようになればユーザーかなり増えると思ふ
まあそれに比例してDQNも増えるんだけどね・・

547:デフォルトの名無しさん
04/10/01 14:45:30
>>546
Window$かよ。( ゚д゚)、ペッ

548:デフォルトの名無しさん
04/10/01 15:02:20
しまった。
ここにはUNIX馬鹿厨がいるんだった。

549:デフォルトの名無しさん
04/10/01 15:02:52
別にWindowsが(他の実用レベルのOSと比較して)悪いとは思わないが,
>>546から激しくDQN臭がするのは確かだ.

550:547
04/10/01 15:03:49
>>548
MACですが何か?

551:デフォルトの名無しさん
04/10/01 15:04:02
やっぱDQNだった….

552:デフォルトの名無しさん
04/10/01 15:15:06
>>549-551
相変わらず反応早いですね。


553:デフォルトの名無しさん
04/10/01 17:24:55
今MIT Scheme落としてるんだけど、これPLTと比べてどう?

554:デフォルトの名無しさん
04/10/01 17:25:01
とまあこのような連中が増えるという例でした。

555:ミミ
04/10/01 18:28:12
>>545
ACL Professional は 2 年間レンタルで
5, 6 万円だって聞きました。

556:デフォルトの名無しさん
04/10/01 20:40:05
ACLってそんなにいいの?
どんな最適化するのか興味ある〜
ところでfranz社ってサ、LISP以外手を出さんの?
例えば、MLとかprologトカサ
あ?そんなLISPがええか?ええのんか?
どないやねん

557:デフォルトの名無しさん
04/10/01 20:44:28
Borland Turbo Prologという製品が昔あったと言う。
末路は (ry

558:デフォルトの名無しさん
04/10/01 20:47:40
>>557
ネタかと思ったら本当にあったのね。
正直、驚いた。

トリビアスレ向きだな。


559:デフォルトの名無しさん
04/10/01 20:53:02
Microsoft Visual L# 2005
Borland LBuilder 2005
とか出るといいのか?

560:デフォルトの名無しさん
04/10/01 21:08:47
某国の場合
Pascal→Delphiみたいな名前置換があるやも

いやむしろナイスな銘々してくれって感じ?
オタ向け言語から一気に若者の主流に返り咲くか?
そういやcurlてどうよ?
本見た感じでは、うーん・・・

561:デフォルトの名無しさん
04/10/01 21:20:45
なんか短期間で書き込んでる変な人がいますね。

562:デフォルトの名無しさん
04/10/01 22:44:05
ACL Professionalの個人向け2年間$599リースは日本でもやってんの?
間に挟まってるぼったくり屋さんが黙って無さそうなんだけど。
AllegroPrologは7で入るんだっけ?それとも別製品か?作ってるのは知ってるけど
どんな製品ラインナップになるのかまでは知らん。

563:デフォルトの名無しさん
04/10/02 00:01:18
CLHS は float に inf や NaN を求めていないんですね.
これらが無いと困りませんか?
近日規格策定予定だったりしますか?

564:563
04/10/02 00:04:09
おっと,clisp の impnotes で触れられているのをまだ見てなかった.スマソ。

565:ミミ
04/10/02 02:06:02
>>562
>ACL Professionalの個人向け2年間$599リースは日本でもやってんの?

Franz の営業さん (日本人) から聞きましたよ。
ただ、リースの場合のテクニカルサポートは英語のみだそうです。

566:デフォルトの名無しさん
04/10/02 10:35:48
>>565
マジですか。小俣ちゃんが言うんならそうなんだろな。
ACL7がリリースされて予定通りMacOSXでCommon Graphicsがサポートされて
同一条件だったら欲しいかも。日本語のテクニカルサポートなんかイラネ。英語で充分。
$1200で買い取りと$599で2年間リースのどっちにすっかで迷うな・・・

567:デフォルトの名無しさん
04/10/02 16:57:12
GaucheからPHPかPythonを使いたいのですが、どういう方法が
あるのでしょうか?

Cならこういう具合であるようなのですが。
URLリンク(www.shiro.dreamhost.com)

568:デフォルトの名無しさん
04/10/02 17:45:30
>>567
あのな、C言語でどうやって使うかを考えろ。
それわかったらGaucheでも使えるだろ。

569:デフォルトの名無しさん
04/10/02 20:27:32
わかった!Pythonインタープリタを実装するんだね!!

570:デフォルトの名無しさん
04/10/02 23:57:10
おれもわかった!PHP を Scheme で書きなおすんだ!
…つか PHP なんてなんで使いたいんだ?
Gauche で書けよ HTML も


571:デフォルトの名無しさん
04/10/03 01:23:46
チ○コかきたい

572:デフォルトの名無しさん
04/10/03 13:30:50
MIT schemeがアンインストールできないんですけど・・・何なんだよヽ(`Д´)ノ

573:デフォルトの名無しさん
04/10/03 13:38:12
λ教は一度入ったら、
もう二度とやめれません

574:デフォルトの名無しさん
04/10/03 13:48:31
信者の社会復帰を支援するツールとしてPythonが用意されています


575:デフォルトの名無しさん
04/10/03 14:00:08
Pythonなんてswitch文さえまともに使えない言語はダメ

576:デフォルトの名無しさん
04/10/03 15:07:31
しかし豊富なライブラリは欲しいよぅ(;´Д`)

577:デフォルトの名無しさん
04/10/03 15:26:09
では parrot 待ちだな

578:デフォルトの名無しさん
04/10/03 17:26:11
parrotでみんな幸せになれますか?

579:デフォルトの名無しさん
04/10/03 17:26:54
schemeでRS232-Cを制御しようと思ったらどうすればよいのでしょうか。

580:デフォルトの名無しさん
04/10/03 17:47:41
>>579
>>568

581:デフォルトの名無しさん
04/10/03 17:52:04
初心者な質問ですみません。
よろしくお願いします。

CLOSで引数を2つ取るメソッドを定義した場合、
それ以降は引数の数が異なる同名のメソッドの定義(オーバーロード)
って不可能なのでしょうか?




582:デフォルトの名無しさん
04/10/03 18:52:54
>>579
termiosインタフェースがある処理系なら
Schemeオンリーでできないか? Gaucheとか。
ioctlが叩けないからだめかな。


583:デフォルトの名無しさん
04/10/03 20:47:03
>>581
普通にできるだろ


584:デフォルトの名無しさん
04/10/03 23:17:18
Unix でのおすすめの scheme 実行環境は何ですか?

585:デフォルトの名無しさん
04/10/03 23:21:37
>>584
guileが標準的

586:デフォルトの名無しさん
04/10/03 23:23:47
>>585
本気か?
いや俺も標準的になって欲しいとは思ってるけど…

587:デフォルトの名無しさん
04/10/03 23:41:07
>>586
ここではそれが良いって書いてあるけれど…
URLリンク(www.sra.co.jp)


588:デフォルトの名無しさん
04/10/03 23:41:39
GNU ソフトウェアの標準の拡張用インタプリタは GUILE である.
GUILE はScheme 言語の実装である
(Scheme は Lisp の非常にきれいで簡潔な方言である).
URLリンク(www.gnu.org)
われわれは他の「スクリプト言語」例えば Perl や Python で書かれたプログラムを
拒絶することはないが, GUILE を使うことは GNU システム全体の一貫性のためには
非常に重要である.

589:デフォルトの名無しさん
04/10/03 23:47:25
guile ってどう読むの?

590:デフォルトの名無しさん
04/10/03 23:48:48
>>588
それは知ってるけど、実際はまだろくに使っていないと思っているんだけど…
おれが無知なだけだったらスマン、例を教えて欲しい

591:デフォルトの名無しさん
04/10/03 23:51:42
>>590
いや、私もどこで使われているか知らない。
同様の用途ではPerlかシェルを良く使うと思うけれど。
でも標準が合った方が良いのは確かでしょ?
乱立しても、いくつの処理系をインストールしたくないし。。

>>589
guile=ぐいるって読んでいるけれど、どうだろう。

592:デフォルトの名無しさん
04/10/03 23:51:57
guileで書かれたスクリプトって何かあるの?
あまり見たことないような…

593:デフォルトの名無しさん
04/10/03 23:54:52
>>589
   __,, , , , _ 、 ,,, ... ,, _ ..,_
 ー=、 、ー-、`ヽ、、ヽ`!i' , ,i",r'",-'"=ミ
    `ヽ`ヾ`、 ! ヽ ! l! i! !_i_/_<'"``
     `,T、iliー'" "、,"、',  i, リ
      !/!,li ,;;-=o=-,ッィ=。ゥィ
  __  i、`!', '; `ー /;;!i、''; ,!
ー''`ヽ`,ーi'`''"!、ヽ , `一'、 /   __
    `il `i ! ヽ、   ̄ ̄ / iヽ、/ ,.ヽ_
     i! !`   `ーァ、-ー'  ! ノ!トi,!'",ノ-、
   ,..=、i! iヽ-、 rィ',;'!ヽー-、!  `/_,i' _,.!'、
ーニー-、._ `ヽゞニ-、.;' i! ! ,  `ト_ノ`x-'" ノ
=ニヽ、 , `, /ヾ=ソ ノ !/   !、`ー`''イ、
-ー-、 `i, / / ヽ `イ_,  i -'" ̄`! !   ヽ
   Tノ /-'"  `   ' !    ヽ     !

594:デフォルトの名無しさん
04/10/03 23:56:04
いつになったら”まだ”が取れるんだろう。
永遠にこない気がしてならない。
そもそも「標準の拡張用インタプリタ」とはなんぞや?
何時使うんだよ。
Linuxのインストーラーはpythonで書かれている様だし。
使われないで標準もあったもんじゃない。
そもそもSCMをベースにしておきながらあの遅さはなんなんだ?
Cにトランスレートすりゃあいいってもんでもないだろ。

595:デフォルトの名無しさん
04/10/03 23:58:45
ガイルでしょう

596:デフォルトの名無しさん
04/10/04 00:01:51
URLリンク(www.google.co.jp)
URLリンク(www.google.co.jp)

597:デフォルトの名無しさん
04/10/04 00:06:59
URLリンク(www.google.co.jp)

URLリンク(www.google.co.jp)

598:デフォルトの名無しさん
04/10/04 00:09:11
>>596
その検索結果には明らかに>>593のガイルが含まれているよ

599:デフォルトの名無しさん
04/10/04 00:10:37
lisp ガイル     7件
lisp guile ガイル  3件
guile ガイル    303件

ノイズばっかだな

600:デフォルトの名無しさん
04/10/04 00:18:45
>>598
綴として読むのだからどのガイルでも良いと思う。

601:デフォルトの名無しさん
04/10/04 00:19:39
lispじゃ引っかかんないんじゃない?
scheme

602:デフォルトの名無しさん
04/10/04 00:22:03
gaucheよりguileの方がいいところって何?


603:デフォルトの名無しさん
04/10/04 00:22:52
gacuhe-gl のマンデルブロートのサンプルを実行したいんですけど
load するだけじゃだめですよね
実行して画面にだしたいんですけどどうやったらよいのでしょう?

604:デフォルトの名無しさん
04/10/04 00:22:56
URLリンク(www.google.com)

URLリンク(www.google.com)

605:デフォルトの名無しさん
04/10/04 00:23:08
>>602
GNUのお墨つき。

606:デフォルトの名無しさん
04/10/04 00:23:55
そこで Pika Scheme ですよ

607:デフォルトの名無しさん
04/10/04 00:58:37
>>585の凄まじい釣りっぷりで誰も>>584に答えていないので、
debianでapt-cache search schemeしてみた。
その中でscheme実行環境っぽいのを適当に
bigloo - A practical Scheme compiler
chicken - Simple Scheme-to-C compiler
drscheme - Scheme Programming Environment
elk - the Elk Scheme interpreter
escm - Embedded Scheme Processor
guile-1.6 - The GNU extension language and Scheme interpreter
mit-scheme - The MIT/GNU Scheme development environment
mzscheme - Rice University PLT Scheme Interpreter
oaklisp - An object-oriented dialect of Scheme.
rscheme - Threaded, persistent, OO, scheme interpreter and compiler
scm - A Scheme language interpreter.
scsh - A `scheme' interpreter designed for writing system programs
stalin - An extremely aggressive Scheme compiler
stklos - An efficient Scheme System providing a powerful Object System
gauche - A Scheme implementation designed for script writing.

沢山あるようなないような…
スクリプトならgauche,それ以外ならmzscheme,mit-scheme,scm,gaucheあたりが無難?

608:デフォルトの名無しさん
04/10/04 01:09:19
gimpとか

609:デフォルトの名無しさん
04/10/04 01:13:37
その中だとbiglooがよさそう

610:デフォルトの名無しさん
04/10/04 02:04:45
guileはGNU/LINUXならほぼ最初から入っているので、悪い選択じゃない。

611:デフォルトの名無しさん
04/10/04 02:08:11
>>610
貴様はguile使ったことあるのか?
guile常用してるやついるの?
何に使うのか知らんが。

612:デフォルトの名無しさん
04/10/04 02:27:24
scheme処理系一覧っぽいのが出てきたところでふと思い出したのですが、
リアルタイムで経緯をご存知の方がいたらYale Tがどんな末路を辿ったのか教えて
いただきたく。全然話題にも上らないんでマイナーな本なんだろうと思うけど
Slade先生のObject-Oriented Common LispでLisp使い始めたのでちと興味あり。

613:デフォルトの名無しさん
04/10/04 07:46:46
>>581
> CLOSで引数を2つ取るメソッドを定義した場合、
> それ以降は引数の数が異なる同名のメソッドの定義(オーバーロード)
> って不可能なのでしょうか?
ラムダリスト(引数リスト)が合同(congruent)のメソッドは一つのGeneric function
に共存できると規定されています。

required argumentの数が違う2つのラムダリストは合同とは言えません。

find-method, remove-method を駆使して、メソッドをgeneric functionからすべて削除
した後で、異なるラムダリストを持つgeneric functionを定義することは可能です。

(defmethod foo (a b &optional c))
としておくのはダメなの?

614:デフォルトの名無しさん
04/10/04 08:30:22
既に知ってるかもしれんが、T についての文書ってこれくらいしか知らんなあ。
Olin Shivers: History of T
URLリンク(store.yahoo.com)

615:デフォルトの名無しさん
04/10/04 23:28:40
>>307
UnCommon Web は継続渡しスタイルで書けてなかなかおもしろい。


616:デフォルトの名無しさん
04/10/05 09:34:36
Schemeで次のようなリストを生成したいのですが、
どういう手続きになるのでしょうか。

(define l '("a" "b" ("c" "c1" "c2")))
(define (foo l)
(?))
=> (list ("a" "b" "c" "c1")("a" "b" "c" "c2"))

617:デフォルトの名無しさん
04/10/05 09:53:24
>>616
(define l '("a" "b" ("c" "c1" "c2")))
(define (foo boo) `(list ,boo))
(foo l)
=> (list ("a" "b" ("c" "c1" "c2")))

618:デフォルトの名無しさん
04/10/05 12:32:40
>>616の質問も、>>617の回答も、まったく意味がわからんのは俺だけ?

619:デフォルトの名無しさん
04/10/05 13:07:29
俺も分からん.

620:デフォルトの名無しさん
04/10/05 13:39:12
>> 618,619
すいません。質問がまちがってました。やりたいことは、S式で表現
したディレクトリ構造から文字列を生成する、です。
(define l '("a" "b" ("c" "c1" "c2")))
(define (foo l)
(?))
=> ("a/" "a/b" "a/c/" "a/c/c1" "a/c/c2")



621:デフォルトの名無しさん
04/10/05 13:43:39
>>620
リストはディレクトリ。そのリストの先頭がディレクトリ名。
リスト内の2番目以降がファイル名。としています。
(define l '("etc" "hosts" ("apache" "httpd.conf" "httpd.conf.bak")))

622:(define (´∀`) 'マターリ)
04/10/05 14:09:14
(define (foo l)
 (let loop ((dir "") (l l))
  (if (list? l) (map (lambda (l) (loop (string-append dir (car l)) l)) (cdr l))
    (string-append dir l))))
今思いついたのはこんなの。

623:(define (´∀`) 'マターリ)
04/10/05 14:20:57
(define (foo l)
 (let loop ((dir "") (l l))
  (if (list? l) (let ((dir (string-append dir (car l) "/")))
          (cons dir (apply append (map (lambda (l) (loop dir l)) (cdr l)))))
    (list (string-append dir l)))))

624:デフォルトの名無しさん
04/10/05 14:34:04
こんなもんか。(elisp)
(defun foo (tree prefix)
(cond ((null tree) nil)
((atom tree) (list (concat prefix tree)))
(t (let ((new-prefix (concat prefix (car tree) "/")))
(apply #'append
(list new-prefix)
(mapcar #'(lambda (file) (foo file new-prefix))
(cdr tree)))))))
と書いたところで、623 と被ってるじゃん。

625:デフォルトの名無しさん
04/10/05 14:50:25
>> 622 623
Gaucheを使ってます。このコードは何で動くのでしょうか。
>> 624
elispで動きました。gaucheのコードではどうなるのでしょうか。


626:デフォルトの名無しさん
04/10/05 15:14:42
>>625
やれやれ... それは君への宿題とするので来週までに解いてきたまえ。
それと、メール欄に sage と書きたまえ。

627:デフォルトの名無しさん
04/10/05 15:20:19
なんとかできました。(なんでsageって必要なんですか?2chよく知らないんです)
(define (foo tree prefix)
(cond ((not(pair? tree)) (list (string-append prefix (x->string tree))))
(else (let ((new-prefix (string-append prefix (car tree) "/")))
(apply append
(list new-prefix)
(map (lambda (file) (foo file new-prefix))
(cdr tree)))))))

628:(define (´∀`) 'マターリ)
04/10/05 16:52:09
(define (foo l)
 (define (f x) (string-append (car l) "/" x))
 (define (g x)
  (if (list? x) (foo (cons (f (car x)) (cdr x)))
    (list (f x))))
 (cons (f "") (apply append (map g (cdr l)))))

>>625
全角スペースを取ればSCMで動いたよ。
622は失敗作。

629:デフォルトの名無しさん
04/10/05 22:06:35
>>614
Tについてのドキュメントって異様に少ないですよね。普通に失敗したプロジェクトだったの
でしょうか。

>>615
継続スタイルはUCWのウリみたいですが、フレームワークの他の部分はどんな感じですか?
副作用バリバリの手続きでHTML生成する設計になってたりしたらイヤかも。
beseのMLに開発者がポストしてましたが、パフォーマンスが気になるくらい遅いですか?
もう少し詳細な使用感を語っていただけるとうれしいです。参考にするので。

630:デフォルトの名無しさん
04/10/05 22:52:06
Tは失敗というか、誰もメンテしなかった・できなかった結果のような
386以降で書かれてたなら誰もが欲しかっただろうし

631:デフォルトの名無しさん
04/10/05 23:01:51

SICP を見ながら書いてみました。どうっすか?

(define (foo l)
(define (foo-iter result dir file)
(if (eq? file '())
result
(if (pair? (car file))
(let ((next-dir (string-append dir (caar file) "/")))
(foo-iter (append result (list next-dir))
next-dir
(cdar file)))
(foo-iter (append result (list (string-append dir (car file))))
dir
(cdr file)))))
(let ((dir (string-append (car l) "/")))
(foo-iter (list dir) dir (cdr l))))


632:631
04/10/05 23:11:19
間違ってた... かなり無理があるけど、これで当っているかな?

(define (foo l)
(define (foo-iter result dir file)
(if (eq? file '())
result
(if (pair? (car file))
(let ((next-dir (string-append dir (caar file) "/")))
(foo-iter
(foo-iter (append result (list next-dir))
next-dir
(cdar file))
dir
(cdr file)))
(foo-iter (append result (list (string-append dir (car file))))
dir
(cdr file)))))
(let ((dir (string-append (car l) "/")))
(foo-iter (list dir) dir (cdr l))))


633:デフォルトの名無しさん
04/10/05 23:12:35
(let ((next-dir (string-append dir (caar file) "/")))
(foo-iter (append result (list next-dir))
next-dir
(cdar file)))
(car file)の処理はこれでいいんだろうけど(cdr file)の分の処理がない。

634:デフォルトの名無しさん
04/10/05 23:17:32
(if (pair? (car file))の内側に(foo-iterがあるけど
(foo-iterの内側に(if (pair? (car file))を持っていったほうが
すっきりすると思う。

635:631
04/10/05 23:34:12
>> 633
まったく、おっしゃる通りでした。

>> 634
...暫く考える...
なるほど。なんとなくイメージできました。勉強になります。

他の人のと見比べるとやっぱり、map とかも勉強しないとだめですね。


636:デフォルトの名無しさん
04/10/06 00:45:10
>>631
SICPの何ページですか。俺の勉強したいので。

637:デフォルトの名無しさん
04/10/06 01:08:52
letrec fib=fn(n)return n<2?n:fib(n-1)+fib(n-2);
fib(30);

let fib2;
fib2=fn(n)return n<2?n:fib2(n-1)+fib2(n-2);
fib2(30);

let fib3=fn(f,n)return n<2?n:f(f,n-1)+f(f,n-2);
fib3(fib3,30);


638:631
04/10/06 01:26:58
>>636
そのものズバリ、というのはないのです。スマソ。
まだ LISP お勉強中なので教科書を見ながらでないと書けないと
いうことでして。

全体の構造は P.19 の脚注にある factorial から fact-iter を
呼び出し、fact-iter の末尾再帰でループ、というのを真似ています。
foo の内部で関数 foo-iter を定義し、foo-iter の末尾再帰で
各ディレクトリエントリ毎に反復になっています。
fact-iter での product が foo-iter での result に対応します。
ややこしいのはディレクトリエントリ毎の処理(下の foo-entry)で、
エントリがファイルの場合はそのファイル名を result リストに加える
だけなのですが、エントリがディレクトリの場合は result リストに
当該ディレクトリ以下の全てのファイル名を foo-iter で得て
result リストに加える必要があります。

(define (foo l)
(define (foo-entry result dir entry)
(if (pair? entry)
(let ((next-dir (string-append dir (car entry) "/")))
(foo-iter (list next-dir) next-dir (cdr entry)))
(list (string-append dir entry))))
(define (foo-iter result dir files)
(if (eq? files '())
result
(foo-iter
(append result (foo-entry result dir (car files)))
dir (cdr files))))
;; foo 本体
(let ((dir (string-append (car l) "/")))
(foo-iter (list dir) dir (cdr l))))


639:デフォルトの名無しさん
04/10/06 01:59:12
foo-entryにresultはいらんな。

640:デフォルトの名無しさん
04/10/06 02:05:50
foo 本体は(foo-entry 'hoge "" l)でいいな。

641:デフォルトの名無しさん
04/10/06 14:10:36
>>638
結局 (append result (foo-entry result dir (car files))) で
ディレクトリの深さ分スタック使うのだから
普通に再帰で書いたのに比べて何もメリットがなくない?
-- 
(define (foo l)
(if (string? l)
(list l)
(map (lambda (x) (string-append (car l) "/" x))
 (cons "" (apply append (map foo (cdr l)))))))

642:デフォルトの名無しさん
04/10/06 14:14:09
スペースの変換を忘れてたorz
(define (foo l)
  (if (string? l)
    (list l)
    (map (lambda (x) (string-append (car l) "/" x))
         (cons "" (apply append (map foo (cdr l)))))))

643:631
04/10/06 23:21:02
>>639 >>640
確かにそうですね。

>>641
メリットは特にないですね。
高階関数に馴染みがなくてあれ以外の実装を
思いつかなかったというのが真相だったりします。

やろうと思えば引数を増やして全て末尾再帰にできるかも
しれませんが、やたら読みにくいソースになるでしょうね。


644:デフォルトの名無しさん
04/10/07 23:52:58
埋め込み言語の例というのが見てみたいんだけど,
onlisp 以外にもなにかありませんか?

645:デフォルトの名無しさん
04/10/08 00:21:31
>>644 これとか?
URLリンク(www.shiro.dreamhost.com)

これはちょっと埋め込みとはちがうけど、S 式で HTML を書くというアプローチ
URLリンク(cl-www.msi.co.jp)
URLリンク(cl-www.msi.co.jp)

646:645
04/10/08 00:28:51
あ、ちがった、埋め込み言語ってそういう意味じゃないのね。

たとえば Lisp/Scheme で書かれた LR パーザジェネレータとか。
腐るほどありそうだな。今、さっと見つかったのはこんなの。
URLリンク(www.informatik.uni-freiburg.de)

647:644
04/10/08 01:00:10
>>646
ども.
たしかに数はたくさんありそうなんですけど,うまく見つけられなくて.
ここのリンク先のはソースもあるんで,
schemeは使ったこと無いけど,本とにらめっこしながら読んでみます.
他にもいい例があればお願いします.

648:デフォルトの名無しさん
04/10/08 01:13:04
LISPはちょっとかじった程度でよくわかってないのですが
質問させてください

たとえば、Cでネットワークゲームを作るときに
なんか処理したかったら、適当なデータ構造に
情報を埋め込んで送信して、受信側でデータを解釈→処理
とかなりますよね
LISPのevalとかを使うと、プログラム本体がデータ構造もかねるから
動作させたい処理のS式をそのままリテラルとして送信して
eval させて動作させてしまう、とか出来るんでしょうかね?

649:デフォルトの名無しさん
04/10/08 01:54:37
Lisp に限らず、eval のある言語ならだいたいできるんじゃないのかな。

650:デフォルトの名無しさん
04/10/08 02:08:45
eval is evil.

651:デフォルトの名無しさん
04/10/08 07:33:19
でもそういう設計はよくないけどな。
ネットワーク越し(じゃなくても)で通信するときに相手から送られてくるものを
信用するというのは危険すぎる、ということを歴史は教えている。


652:デフォルトの名無しさん
04/10/08 08:02:59
>>651
アプレットやSOAPと基本は同じでしょ?
用はセキュリティーの確保の仕方の問題だと思われ。

653:デフォルトの名無しさん
04/10/08 09:32:56
>>648
evalも結局のところは、「受信側でデータを解釈→処理」してるだけ
なんだけどね。「解釈→処理」の処理系が最初から用意されていると
いうだけで。

汎用性が高い、本体と同じ言語で書ける、といった側面はそのまま
メリットにもデメリットにもなるし。


654:デフォルトの名無しさん
04/10/08 10:17:45
scheme の eval みたいに環境を指定できれば比較的手軽にセキュリティー確保できるね


655:デフォルトの名無しさん
04/10/08 11:19:34
shiro さんの2004.10.07の文章で、
URLリンク(www.shiro.dreamhost.com)

以前から Lisper としての適性に関係があるとして、時々話題になっている、
アスペルガー症候群・高機能自閉症の、簡易テストが紹介されている。

「平均は16.4ポイントで、 32ポイント以上のうち8割はautism related disorder
だそうだ。私(shiroさん)は31ポイントだった」そうです。
URLリンク(www.wired.com)

自分でやってみたところ、慎重に回答したのに38ポイントだった。
しかし自分はヘタレ Schemer。ぜんぜんLisp能力に比例して無いじゃん…。

656:デフォルトの名無しさん
04/10/08 12:14:36
このテスト、人間関係が苦手である、うまく行っていないという項目が多いな。
だから、

・ Lisper として能力が高い
→・他言語のプログラマとしても成功する
→・周囲から尊敬を集める
→・人間関係が良くなる
→・このテストのスコアが下がる

Lisper としての能力と、このテストのスコアには、こういう負の相関が
働いている気がするのだが。

657:デフォルトの名無しさん
04/10/08 12:48:17
心理テストに気休め以上の意味があるとは思わん。

658:デフォルトの名無しさん
04/10/08 17:18:30
>>655
辞書引きながらやってみた。 24ポイント。
微妙に低くてチョトくやしい (w

659:655
04/10/08 18:40:48
念のために言うけど、このテストはまったく当てにならないと思うよ。
『on Lisp』をいつまでも読み進められない私がそれは保証できる。

だけどなんとなく、ほかの人の点数も知りたいのう。
冷やかしでトライしてくれた人、他にもいたら書き込んでください。
おながいします。

660:デフォルトの名無しさん
04/10/08 19:26:09
34。Lisp は好きだけど能力があるのかどうか……

661:デフォルトの名無しさん
04/10/08 19:27:47
emacs で動く scheme 実行環境はありますか?


662:デフォルトの名無しさん
04/10/08 19:51:11
>>659
自閉症スペクトラムのテストとしてはそこそこいい出来だと思うが。
親戚男性自閉症率高の趣味の Schemer で、40点。非人間的なものへ
のこだわりと認識能力で点数が出て、直接 Lisp と関係があるわけ
じゃないから。

>>661
M-x run-scheme では不満?


663:655
04/10/08 20:08:14
>>662
自閉症スペクトラムについては、まあ同意です。
自閉症には私も興味を持って、いろいろ調べてみたことがあります。

「当てにならない」と書いたのは、Lisper としての能力と、このテストの関連。

>>661
思い切って guile-emacs を導入するのはどうだろう?
使ったことはないけれど。

664:デフォルトの名無しさん
04/10/08 20:08:44
>>656
・ Lisper として能力が高い
→・でも別にプログラマとしては成功しない
→・周囲からも尊敬は集めない
→・人間関係も良くならない
→・このテストのスコアが上がる

Lisper としての能力と、このテストのスコアには、こういう正の相関が(以下略)

665:デフォルトの名無しさん
04/10/08 20:41:18
感O しないで AC になれなかったので,
せめて lisp で AC に近づこうとしています.
これが妥当な lisp の用途ということでよろしいでしょうか?

666:655
04/10/08 21:32:01
それにしても、当然のように「自閉症スペクトラム」という言葉を使う人も、
やはりこのスレにはいましたか。ポイントも私より上だし。

>>664
私はプログラマとして才能がなかったんで、Lisp を覚えて「普通の奴らに差をつけ」
ようとしたんだけど、Lisper としても才能がなかった。
しかも副作用として、それまでは面白かった Java がつまらなくなってしまった。

自分はダメだったけど、Lisperとして成功できる人なら、他の言語でも成功するのかと
思っていたのに、まさか逆だというのですか?!


>>665
私は感電と Lisp の経験者だけど、現状は前述のとおり。
でもいいのだ。Lisp は面白いから。
きっと Lisp は、ただ面白いためにあるのだ。


才能はさておき、こういうことに興味を持つことには、自閉症傾向は関係が
あるような気がしなくもない。

667:デフォルトの名無しさん
04/10/08 21:59:47
ACよりもSEXPになりたい。

668:デフォルトの名無しさん
04/10/08 22:13:30
この自閉症どもが

669:デフォルトの名無しさん
04/10/08 23:13:31
>>667
sexp が t になるには 8 歳までに (ry

670:デフォルトの名無しさん
04/10/08 23:36:39
     ∩
( ゚∀゚)彡 sexp!sexp!
 ⊂彡

671:デフォルトの名無しさん
04/10/09 00:47:43
Lispの才能と体重は正比例の関係があるらしいよ

672:デフォルトの名無しさん
04/10/09 00:51:02
>>671
デブヲタ発見。

673:デフォルトの名無しさん
04/10/09 01:16:40
sexpと体重は正比例の関係があるらしいよ

674:デフォルトの名無しさん
04/10/09 09:57:46
「on Lisp」の日本語版があるって聞いたんだがその本の日本語名ってなに?
'on' も 'Lisp'も一般的すぎて検索してもよくわからない・・・

本じゃなくてどこかのWebページなのか?

675:デフォルトの名無しさん
04/10/09 10:00:05
>>674
>>544

676:デフォルトの名無しさん
04/10/09 10:00:29
>>674
>>544

677:674
04/10/09 10:14:44
おお、サンクス!!
スレの真ん中あたりにあったのか・・・

#こう書くべきかな? (thanx 675 676)

678:デフォルトの名無しさん
04/10/09 11:11:51
>>671
なんとなく,才能は体重の逆数にあるような.
0 Kgで発散しますが,CLHS には inf が無いのでちょっと分かりません.

679:デフォルトの名無しさん
04/10/09 11:55:07
Gauche(ver 0.8.1)でGauche-gtk(ver 0.4.1)
やってるんですけど、
(gdk-font-load)が未定義の値って言われちゃいます。
なんで?



680:デフォルトの名無しさん
04/10/09 11:55:38
まだ4kgもないうちの甥っ子は天性のlisperなのかしら


681:デフォルトの名無しさん
04/10/09 13:47:02
大人になると、才能は錆付くんだよ。

682:デフォルトの名無しさん
04/10/09 17:12:00
SRFI40: A Library of Streamsを読んでて違和感を感じたので、それを文に
してみた。schemeのプロミスの話。感想きかせて。

members3.jcom.home.ne.jp/t-yam/promiseless.html

683:デフォルトの名無しさん
04/10/09 17:25:23
ブラクラ?

684:デフォルトの名無しさん
04/10/09 17:26:36
>>682 いいんじゃない? そもそもR5RSはdelayが特定の「プロミス型」を
返すことを要求していないから、そこで必要な時に必要なだけforceされる
処理系も許されてるんじゃないかな。(delayの返す値は「プロミスである」
とされているだけで、それが具体的に何なのかは未定義。さらに、
「プロミスとそれがforceされた値とを区別することは規格内ではできない」
とされているから、プロミスなんてユーザには見えない、っていう処理系
もありと。)

個人的にはimplicit forceしてくれた方がずっとプログラマに易しいと
思う。R5RSでそうなっていないのは、色々な遅延評価メカニズムを実装する
ベースとしての処理系実装も許しているからなんじゃないかな。色々
試してみたいときにはforceされるタイミングを制御したいことも
あるんじゃない?



685:デフォルトの名無しさん
04/10/09 17:31:52
具体的なコードを挙げると説得力が増すぞ。

686:デフォルトの名無しさん
04/10/09 17:42:30
delay/forceが無駄な仕様にみえて仕方がない。
Schemeの思想と背反する様な。
実際使う事あるの?

687:デフォルトの名無しさん
04/10/09 17:46:52
くまああああああ

688:682
04/10/09 17:47:40
レスありがとう。

>>684
R5RSの注意すべき点は、プロミス型があるかどうかではなくてプロミスが
オブジェクトであること(R5RS 4.2.5)だと思う。それが根本的な問題かと。

> forceされるタイミングを制御したいことも
ありそうだよね、これ。ただ、必要になったときに強制されるのだ、という
方が純粋なcall-by-needに近いようにも思う。

>>685
リンクたどればあるよ。


689:デフォルトの名無しさん
04/10/09 18:13:49
>>674
"On Lisp"とかぐーぐるさまに教えると次の検索で少しは幸せになれるんではなかろうか。

690:682
04/10/09 18:25:58
再レス。
>>684
> プロミスなんてユーザには見えない、っていう処理系もありと
あなたの言ってることがわかったw
R5RSのforceの解説の最後の方にそう書いてあるのね。完全に見落としてた。
thx


691:デフォルトの名無しさん
04/10/09 19:11:42
forceはpromiseにしか適用できない(かもしれない)のに、
promiseであるかどうか判別する手段が無い(かもしれない)。

つまり完全に評価順序が分かっててpromiseと値を混在させないように
プログラムが書けるときしか使えない。
でも遅延評価ではあらかじめ評価順序を知るのは一般にはとても難しい。
実用性が全然ないような。(>>616をさえ遅延評価で書くのに挫折…)

692:デフォルトの名無しさん
04/10/09 19:29:32
>>691
forceは何にでも適用できるよ。それは保証されてる。
promiseであるかどうか判別する手段はないかもしれない。


693:デフォルトの名無しさん
04/10/09 20:04:18
>>692
どこに書いてある? 

例えば
MIT Scheme

1 ]=> (force 1)

;The object 1, passed as an argument to force, is not a promise.
;To continue, call RESTART with an option number:
; (RESTART 1) => Return to read-eval-print level 1.

2 error>

694:692
04/10/09 20:48:54
あ、わりい。漏れの勘違い。
'may' だから、適用できるかどうかわからんのね。
なんだ、ますます使い勝手が悪いなあ。


695:デフォルトの名無しさん
04/10/10 02:59:20
>>691
関数的なもの、つまり副作用が無いものであれば評価順序に意味は無いはず。
そういうものと組み合わせてこそ promise の真価は発揮される。
一度評価したら二度目以降の force は必ず同じ値になるというのもそう。

とはいいつつも delay/force を使ったことないや。

696:デフォルトの名無しさん
04/10/10 17:26:47
>>695
> 関数的なもの、つまり副作用が無いものであれば評価順序に意味は無いはず。
間違い。それなら遅延評価なんて要らない。

そもそも副作用の話はしていない。>>691で言っているのは、
「評価順序が完全にわかってない場合、一度forceしてしまったものに
もう一度forceしてしまうことがあり、それがエラーになる(実装依存で)」
ということ。

697:デフォルトの名無しさん
04/10/10 17:46:22
何度 force しようが promise は promise のままでは?
force した結果の値を他で保持しておく必要無いんだし

698:デフォルトの名無しさん
04/10/10 18:25:57
691は「渡された値がpromiseかどうかわからないから念のためforceしとけ」
ってことができない、って言いたかったんじゃない?

>>695 正規順序と適用順序について調べるとよろし。


699:デフォルトの名無しさん
04/10/10 20:19:31
>>697
forceした結果を他の関数に渡さないと計算は進まないし、
delayし忘れると計算してしまう。
なにか自分でプログラミングしたら難しさがわかると思うけど。

自分が遅延評価のプログラムだと思うものをgoshで組んだ後
MIT Schemeにかけてそのまま動いたら、結構すごいことだと思うよ。

700:デフォルトの名無しさん
04/10/10 20:42:36
>>698
そうです。

全部promiseにしてしまえばいいのだろうけれど、
それには一から遅延評価の処理系を作るか、
それなりのライブラリを作った上で注意深くforce/delayを
利用しつつ目的のプログラムを作るか、
ということになって、どっちもかなりのオーバーヘッド。

すぐには計算して欲しくない所にだけ適当にdelayいれておいて後で
なんとかするというわけにはいかない。

701:デフォルトの名無しさん
04/10/10 21:07:36
>>655
微妙に訳が違ってないか?
Eighty percent of those diagnosed with autism or a related disorder
scored 32 or higher.

元訳:32ポイント以上のうち8割はautism related disorder
試訳: 自閉症やその関連の診断を受けた人の8割は、32ポイント以上だった。

つまりこれは、このテストが8割の診断者をカバーすると言ってはいるが、
普通の人がテストを受けて、スコアが高ければ自閉症だ、とは言っていないんじゃないか?


次ページ
最新レス表示
スレッドの検索
類似スレ一覧
話題のニュース
おまかせリスト
▼オプションを表示
暇つぶし2ch

5068日前に更新/286 KB
担当:undef