5ちゃんねる ★スマホ版★ ■掲示板に戻る■ 全部 1- 最新50  

■ このスレッドは過去ログ倉庫に格納されています

Lisp Scheme Part39

1 :はちみつ餃子 ◆8X2XSCHEME :2014/08/14(木) 20:55:52.61 ID:o+vsYevq
Common Lisp、SchemeをはじめとするLisp族全般のスレです

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

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

■関連スレ
【入門】Common Lisp その10【質問よろず】
ttp://toro.2ch.net/test/read.cgi/tech/1361341876/
【Scheme】Schemeインタプリタ Mosh Part1【Lisp】
ttp://toro.2ch.net/test/read.cgi/tech/1272469779/
【Lisp】プログラミング言語 Clojure #3【JVM】
http://toro.2ch.net/test/read.cgi/tech/1380333808/
【魔法】リリカル☆Lisp【言語】
ttp://toro.2ch.net/test/read.cgi/tech/1183396621/

2 :デフォルトの名無しさん:2014/08/15(金) 00:13:29.39 ID:uTPP5FCM
長門ってどっちだスレ立て乙

3 :デフォルトの名無しさん:2014/08/15(金) 02:06:59.64 ID:UqEI85rN
前スレ>>989
> 日本語訳がおかしい気がする

>そして第二に、最良の事例(もしくは標準的な事例でさえも)は、タスクによって左右される
>ものではないと考えられていることです。つまり、ワープロのコードを記述するために最良の方法は、
>宇宙探査機の制御システムのコードを記述する上でも最良の方法だという憶測です。しかし、そうではありません。

practiceは「事例」では少しおかしく、「方法」でいい。
「つまり」以降に出てくるwayも「方法」になるので違いを出したいならば「実践」かな。
「やり方」としてもいいと思う。

4 :デフォルトの名無しさん:2014/08/15(金) 20:34:52.47 ID:HK4d36CL
>>1

5 :デフォルトの名無しさん:2014/08/15(金) 20:59:55.06 ID:8BWzrSgf
>>1
ApacheをHunchentootに置換する権利をあげよう

6 :デフォルトの名無しさん:2014/08/16(土) 16:36:46.85 ID:HLPR753i
http://www.buzzword.jp/img/face10.png

7 :デフォルトの名無しさん:2014/08/17(日) 22:17:21.13 ID:kroYkBys
伊倉辰雄のウザさ半端ないな

8 :デフォルトの名無しさん:2014/08/21(木) 17:04:30.61 ID:24bfdA7I
lambda式のままでシンボルにバインドせずに再帰させる方法がピンときた。
要するに自身へのポインタを引数に渡して、そのポインタに再帰させるんだな
適用順Yコンビネーター(という関数)を作らなくてもいいんだな


例 リストのメンバーか?
(((lambda (self-ptr)
(lambda (a l)
(cond
((null? l) #f
((eq? (car l) a) #t
(#t ((self-ptr self-ptr) a (cdr l))))))
(lambda (self-ptr)
(lambda (a l)
(cond
((null? l) #f
((eq? (car l) a) #t
(#t ((self-ptr self-ptr) a (cdr l))))))) 2 ’(1 2 3))

9 :デフォルトの名無しさん:2014/08/21(木) 22:00:48.14 ID:1s6K9Kp0
そうか。

10 :デフォルトの名無しさん:2014/08/21(木) 23:10:20.54 ID:mKoqw6yc
括弧足んないよ

11 :デフォルトの名無しさん:2014/08/22(金) 11:49:57.51 ID:qYNWrdHC
https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcQljebB_qGHv6_3JSjCi6jbKmmvLXQKmXrIEq5ENOG11_YWlPxl

これnaoiwata?
もしそうなら、かわいいからWishリストの本でも贈ろうかな^^

Wishリスト
http://www.amazon.co.jp/registry/wishlist/3FSK478U0FBC/ref=cm_wl_sb_o?reveal=unpurchased&filter=all&sort=priority

12 :デフォルトの名無しさん:2014/08/22(金) 15:49:00.79 ID:fadX/ShW
一個人の話題をここに書くのやめない?
この界隈の人間がこういうの許容するやつばっかりだと思われるのも嫌

13 :デフォルトの名無しさん:2014/08/22(金) 15:58:09.30 ID:4AO6/f5c
俺のチンポは四国一
可愛いSchemeも
継続よ、継続よ
と泣いて喜ぶ
>>12
しね早漏包茎ついでに短小

14 :デフォルトの名無しさん:2014/08/22(金) 16:09:18.10 ID:FgHOhvav
NGNG

15 :デフォルトの名無しさん:2014/08/22(金) 16:53:35.92 ID:fadX/ShW
>>13
あらごめんなさい。11についてかいたのですけれど何か問題でも?

16 :はちみつ餃子 ◆8X2XSCHEME :2014/08/22(金) 21:00:18.61 ID:ek2Grjit
下品なのはやめれ。

17 :デフォルトの名無しさん:2014/08/23(土) 21:25:52.18 ID:qr79zWyH
つまり、やっぱり俺のチンポが町内一ということやな
婦人会もメロメロやで
俺はニボシくってチンポ固くしたで
おまえ等も見習えや

18 :デフォルトの名無しさん:2014/08/24(日) 14:05:37.88 ID:ngQva2ba
非表示非表示

19 :デフォルトの名無しさん:2014/08/29(金) 07:58:34.13 ID:IguOVOzJ
事情があってAndroid上のエディタを使った。対応()のチェック機能がない.
書いたものが動かない!()の対応チェックでとんでもなく時間かかった.
俺はまだまだだな。リスプと取り組んで半年

20 :デフォルトの名無しさん:2014/09/03(水) 05:10:48.67 ID:5qTogmZr
SICP の日本語訳が無料で公開されているというありがたい話を聞いて見に行ったら、
「関数と手続の間の対称性は事物の属性の説明と行いの説明との間の一般的区別に関する反映です。」
みたいなすばらしい日本語ですごいありがたみがあった

21 :デフォルトの名無しさん:2014/09/03(水) 06:03:21.17 ID:Pspo8/9n
The Little Lisper昨日やり終えた
8章までは簡単だったが無名再帰は感覚化するのに何度もやり直した。
最終章でのインタープリター作りは快調に終わったが、これ、終わり方中途半端で「後は自分で完成させなさいね」って感じ?
最後の一ページでのcons/car/cdrの定義
はじめなにやってんるんだが意図がわからんかった
最後の一ページにきてはじめて
「えへへ、内部のデータ構造としてはリストは幻影、実体はセルやで」
とささやいたんやな


「だからよぉ、もうconsもcarもcdrも
primitiveとしなくてもええんやで」
とか言ってるくせに
primitiveの適用関数はそのままでおえてるし。後は自分でやれってかあ。

参考資料テキストから

(define cons
(lambda (u v)
(lambda (b)
(cond
(b u) (t v)))))

(define car
(lambda (l)
(l t)))

(define cdr
(lambda (l)
(l nil)))

22 :デフォルトの名無しさん:2014/09/03(水) 11:16:32.58 ID:grGI9d1X
The Little Schemer 手習い
The Seasoned Schemer 修行
The Reasoned Schemer (論理プログラミング)
やったことないけど、2冊目に繋がってたんだっけ?それとも別トピック?

23 :デフォルトの名無しさん:2014/09/03(水) 18:43:19.19 ID:73LZ6iok
>>21
そんなこと最後のページに書いてんのか
文学的想像力の豊かすぎる人にはちょっとアレな本だね

24 :デフォルトの名無しさん:2014/09/05(金) 21:58:27.17 ID:LsksGc1g
gaucheでリストに入ってる演算子を使って演算したいんですけど、たとえば、

( (car '(+ -)) 1 2)

で 1 + 2 は計算できないんですけど、どうすればいいでしょうか

25 :デフォルトの名無しさん:2014/09/05(金) 22:08:59.44 ID:nNMRtnaP
((car (list + -)) 1 2)

26 :デフォルトの名無しさん:2014/09/05(金) 22:58:39.75 ID:LsksGc1g
gauche で演算子をリストにしたいんですけど、
これ↓

(define oplist (list f1 f2))
(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))

を reple で load で読み込むとエラーになるけど
これ↓

(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))
(define oplist (list f1 f2))

はエラーになりません

もしかしてgucheも関数を定義する順番を考えないといけないということでしょうか

27 :デフォルトの名無しさん:2014/09/06(土) 00:39:29.41 ID:7NWNK+Dr
定義する順番というか評価する順番は考えなきゃいけない。

28 :デフォルトの名無しさん:2014/09/06(土) 01:48:12.10 ID:H+1wKpki
いわゆる純粋な関数型言語と勘違いしてる?

29 :デフォルトの名無しさん:2014/09/07(日) 14:52:03.72 ID:2ylfd4lm
>>26
> もしかしてgucheも関数を定義する順番を考えないといけないということでしょうか

oplist自体は関数じゃないので、その定義の際には
定義式の (list f1 f2) が評価されねばならない。
しかし最初のだと、この式の評価の時点で f1, f2 は未定義だからエラーになる。

関数ならば定義の時点で本体式は評価されず、その中で参照している識別子が
定義済か否かは問わないので、次の2つはどちらもエラーにならず同じ結果になる。

(define (app-pair v) (list (f1 v) (f2 v))
(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))

または

(define (f1 v) (+ 0 v))
(define (f2 v) (- 0 v))
(define (app-pair v) (list (f1 v) (f2 v))

30 :デフォルトの名無しさん:2014/09/07(日) 15:00:31.64 ID:Hz0DmE0w
>>29
なるほどぉ、勉強になった

31 :デフォルトの名無しさん:2014/09/07(日) 15:36:02.63 ID:qqB/9i/k
>>26
Cとから手続き型言語から入るとこういう疑問を余り抱かないと思うけど、
最近は一番最初にプログミングを覚えた言語がhaskellですとかあるんか?

32 :デフォルトの名無しさん:2014/09/08(月) 13:09:11.00 ID:1svGDpQ9
初めての言語はLispです

33 :デフォルトの名無しさん:2014/09/12(金) 13:54:39.12 ID:Ypjnf85z
初めての彼はネパール人です

34 :デフォルトの名無しさん:2014/09/14(日) 13:03:02.18 ID:vuNBw+gj
Lisp系言語以外でSCHEMEに一番近い言語って何だと思う?

35 :デフォルトの名無しさん:2014/09/14(日) 14:06:43.40 ID:Q+DajjuF
pythonかjsだわな

36 :デフォルトの名無しさん:2014/09/14(日) 15:17:27.62 ID:jNUFi1Dh
ISWIM
Dylan
OCaml

37 :デフォルトの名無しさん:2014/09/14(日) 15:22:42.36 ID:6ldmPVQO
C言語

38 :デフォルトの名無しさん:2014/09/14(日) 17:16:05.39 ID:Q+DajjuF
>>36
dylan近いか?
dylan自体がselfとかjsに近いからjsが近い言うた僕が言うのもなんだけど。

39 :デフォルトの名無しさん:2014/09/14(日) 17:26:54.59 ID:jNUFi1Dh
DylanはS式でないCLOS
名前空間管理やSLOTアクセス管理に無頓着

40 :デフォルトの名無しさん:2014/09/14(日) 21:44:39.27 ID:uFPl4kjJ
lua

41 :デフォルトの名無しさん:2014/09/15(月) 02:06:28.47 ID:RdKEbqlY
DylanてS式でもうごくんじゃないっけ?

42 :デフォルトの名無しさん:2014/09/15(月) 18:36:37.73 ID:upNhnkM6
C言語の正規表現マッチャのコードとか見るとschemeの臭いがするのは私だけでしょうか

43 :デフォルトの名無しさん:2014/09/16(火) 00:12:54.33 ID:tKxjmxiD
てかC言語って割とLispの影響が見える

カンマ演算子とか三項演算子とかfor文とか

44 :デフォルトの名無しさん:2014/09/16(火) 21:09:01.47 ID:Zss/iCB4
>>43
異論は多いみたいだが私もそう感じる http://peace.2ch.net/test/read.cgi/tech/1313183984/594

45 :デフォルトの名無しさん:2014/09/16(火) 23:27:30.64 ID:0xhBhzna
SICP の日本語LaTeX版を提供してくれているのはすごくありがたいけれど、読めば読むほど翻訳が(ありがたさから以下略)

46 :デフォルトの名無しさん:2014/09/17(水) 01:19:39.44 ID:i84HTWw6
>>43
> てかC言語って割とLispの影響が見える
>
> カンマ演算子とか三項演算子とかfor文とか

それらはAlgol 68からの継承だよ。
いわゆるAlgolはAlgol 60を指しAlgol 60は通常の文言語だが
Algol 68は手続き的(書き換え可能な記憶域を書き換えることで計算を表す)な式言語で
Cでの代入操作が文でなく式の演算子になっているのはAlgol 68が源流。
カンマ演算子や3項演算子もAlgol 68が元祖でそれから受け継いだもの。
for文の各パーツがオプション的になってるのもAlgol 68のループ構文からの流れだ。
Algol 68を少し真面目に調べてごらん。Cがどれだけ影響を受けたか良くわかる。

47 :デフォルトの名無しさん:2014/09/17(水) 07:43:45.31 ID:ry1QXF9R
http://ja.m.wikipedia.org/wiki/ALGOL
http://ja.m.wikipedia.org/wiki/LISP
http://ja.m.wikipedia.org/wiki/ジョン・マッカーシー

マッカーシーは60年の時点でALGOL設計委員会の委員やって、ALGOLに触発されたともあるので
LISPとALGOL68の構文の関係は60-68年当時のLISPを調べないと分からないかも。

48 :デフォルトの名無しさん:2014/09/17(水) 17:35:17.17 ID:RlznIxIP
構文には影響ないだろw

LispでAlgolの影響とか言われるのは、SchemeとかCommon Lispとかの
近代的なLispの静的スコープ。あれはAlgol(68じゃなくて60も)で関数定義を
ネストさせた場合の意味論と同じ。これはマッカーシー先生は関係しない
んじゃないかなぁ。

49 :デフォルトの名無しさん:2014/09/18(木) 01:17:15.07 ID:ITHwf95q
>>47
McCarthyはAlgol 68には全くタッチしていない。
そもそもAlgol 60の設計をやった連中はWijngaardenのチームが出してきたAlgol 68の提案を見て
ほぼ例外なくあきれ返って愛想をつかしたのだから。
Algol 60とAlgol 68とは言語の中身や基本コンセプトも設計したメンバも全く別だよ。
Algolという単一の言語の年代別バージョンの違いじゃないんだ。
Algol 60とAlgol 68とは、CとAlgol 68との違い以上に違う言語。

Algol 60とAlgol 68とを明確に区別せず単なるバージョンの違いのようにみなして議論するのは全くのナンセンス。

50 :デフォルトの名無しさん:2014/09/18(木) 06:20:50.77 ID:3NMkLfKM
どうして「そんなに違う」のに同じ名前(Algol)を継承したの?

51 :デフォルトの名無しさん:2014/09/18(木) 13:24:17.35 ID:IKF3bMic
よーするに「委員会言語」。

あとCの起源にまつわる伝説のあやしさと、Algol68からの影響については、
このページがよくまとまってる。 ttp://nanyanen.jp/comp/corigin.html

52 :デフォルトの名無しさん:2014/09/19(金) 01:33:00.88 ID:nqW+90Tw
>>50
> どうして「そんなに違う」のに同じ名前(Algol)を継承したの?

IFIPという情報処理に関する国際組織のWG2.1(だったと思う)が中心になって、みんなが共通に使える(つまり特定企業の持ち物でない)
アルゴリズム記述言語(algorithmic language)を作ろうということになって作られたのがALGOL 60。AlgolはALGOrithmic Languageの略。
で、さらに強力な記述力を持つものにしようと1968年を目途につくることになって、提案を募った結果、オランダのWijngaardenらのチームが
選ばれて設計を任された。それで作られたのがALGOL 68。

つまりALGOLという名前は普通のプログラミング言語の名前のように純然たる固有名詞じゃなくて
ALGOrithmic Languageという一般用語の省略形という側面をも含んでいるんだよ。

だから文法的にも言語設計哲学的にも全く異なった言語や両者以外のいくつもの言語案がALGOLの名前をもっているんだ。
例えばALGOL 68の提案に危機感を覚えた一人にHoareさんがいる。で、彼が中心になって作った代替案はALGOL Wという言語。
これは実際に処理系も作られたし、これによるプログラミングの教科書も少なくとも1冊はちゃんと出版された(もちろん英語ね)。

日本でもALGOL 60の後継案(つまり後のALGOL 68になる提案と争った候補の一つ)を提案しており、ALGOL N(NはNipponの意)と
呼ばれている。これも1冊だけその言語設計哲学・コンセプト面を扱った本が日本語で出版された。

53 :デフォルトの名無しさん:2014/09/19(金) 01:37:15.54 ID:nqW+90Tw
>>52への補足

連投ごめんね。
Knuthさんの作った文書整形言語&プログラムであるTeXの一番最初の処理系は
SAIL(確か Stanford AI Languageの略じゃなかったっけ?不確かでスマン)で書かれたが、
私の勘違いでなければ、SAILはHoareさんたちのALGOL Wから発展した言語だったはず。

54 :デフォルトの名無しさん:2014/09/19(金) 01:51:31.12 ID:TV+vn4Ur
WはWirthのW.
彼の方がメインだったはず。
ALGOL 68と60の後継を競った。

55 : ◆QZaw55cn4c :2014/09/19(金) 03:13:13.87 ID:luwRUG2M
>>54
そのWrith は pascal の人?であればかなり納得の系譜だね

56 :デフォルトの名無しさん:2014/09/19(金) 10:21:53.64 ID:vmyXN9M9
WはWirthの意だったか。
Nは島内剛一先生だったよね確か。

57 :デフォルトの名無しさん:2014/09/20(土) 02:08:25.61 ID:EUFRt8Dw
>>54
Algol WのWはWirthさんのWだったのか。
なるほど、それをHoareさんらと共同でまとめて対抗案として提案したという延長として、
さらにPascalをWirthさんが作ったときに
HoareさんはFloydさんのアプローチを発展させた公理的意味論を編み出して
Pascalに対して具体的に定義したわけだ。

58 :デフォルトの名無しさん:2014/09/20(土) 12:48:12.90 ID:rTgfsjb+
Pascalの主目的の一つが言語の簡略化だったから、
公理的意味論も構築しやすかった。

59 :デフォルトの名無しさん:2014/09/20(土) 18:17:17.90 ID:TBvJ9nfM
あんなにたくさんタイプしなきゃいけないのに簡略化なの?

60 :デフォルトの名無しさん:2014/09/20(土) 18:32:13.32 ID:j8ruAE+U
簡略化された結果タイプすることが増えたんじゃね

61 :デフォルトの名無しさん:2014/09/20(土) 19:51:36.91 ID:x0cvFC0K
Lispも言語の元データを簡略化した結果カッコが増えたじゃないか

62 :デフォルトの名無しさん:2014/09/20(土) 20:06:52.11 ID:Lh7EqoaX
skiコンビネータ−めっちゃ簡素やん

63 :デフォルトの名無しさん:2014/09/20(土) 20:40:44.73 ID:U9SdVMdG
>>59
教育のための言語だから

64 :デフォルトの名無しさん:2014/09/20(土) 20:47:34.51 ID:TI7VGCx5
意味論と構文論を切り離して考えられない奴はこれだから

65 :デフォルトの名無しさん:2014/09/21(日) 00:26:47.22 ID:wB7BYq1/
pascal は素敵な言語だと思うよ delphi も結構広まっていたと思うよ
あーたしかに end の後ろになにもかかないか、セミコロンか、コンマか、とか今でも間違えるけど‥
http://ideone.com/uVYgb
http://ideone.com/ogrDn

66 :デフォルトの名無しさん:2014/09/21(日) 07:16:02.65 ID:esUuA1t7
>>64
どう違うの?

67 :デフォルトの名無しさん:2014/09/21(日) 11:04:35.35 ID:YP6uE3o3
>>66
構文論はプログラムの形式を議論する
意味論はプログラムが表現するモデルを議論する
わかりやすく言うと理論的には、構文論が扱うエラーはコンパイラだけですべてを自動検出できるが、意味論が扱うエラーは自動的にはすべてを検出できない

68 :デフォルトの名無しさん:2014/09/21(日) 11:35:55.88 ID:f71zaoHG
意味論でのエラーを構文論からは検出できない、つまりコンパイラーでは検出できない具体的な例はありますか

69 :デフォルトの名無しさん:2014/09/21(日) 11:46:07.70 ID:YP6uE3o3
>>68

(define (factorial n) (* n (factorial (- n 1))))

70 :デフォルトの名無しさん:2014/09/21(日) 12:13:45.13 ID:rvkNXqzj
>>69
横からでスマン
その例って静的型付き言語ならエラーにできるかな?

71 :デフォルトの名無しさん:2014/09/21(日) 12:25:46.90 ID:YP6uE3o3
>>70
>>69がエラーは、factorialが一般的に何をやる計算かとか、整数が無限にあるというドメインやモデルの知識があってはじめて分かる

なので、コンパイラがエラーを出すのは間違っている
「factorial」が「wait-ever」や「make-overflow」という名前だった場合や、*や-を文字列演算子で上書きしてた場合を考えれば分かる

72 :デフォルトの名無しさん:2014/09/21(日) 14:41:39.96 ID:DcWnbWt1
>>71
なるほど、その例で構文論と意味論のイメージがつかめました
サンキュー

73 :デフォルトの名無しさん:2014/09/22(月) 01:56:13.79 ID:yEa+FP/P
やっぱりボードゲームはCで書くべきなのかな
common lispで型宣言つけて(safety 0) (speed 3)でマクロで包んでいくのと
どっちがいいんだろう

74 :デフォルトの名無しさん:2014/09/22(月) 05:30:19.46 ID:YdAcMO6t
>>73
どんなのか知らないけど、イマドキC使うのは特殊な要件があるの?
CLじゃなくてもPythonとかrubyじゃダメなの?

75 :デフォルトの名無しさん:2014/09/22(月) 13:31:12.22 ID:KDn0JvdI
ボードゲームって将棋とかのことを言ってるんだけど
そういうののaiは探索関数で一ミリ秒でも速くしたほうがいいから
PythonやRubyは遅すぎてダメなの

76 :デフォルトの名無しさん:2014/09/22(月) 13:33:17.33 ID:jhj0pzxy
探索ルーチンだけアセンブラで書けばいいと思うの。
探索ルーチンは「ボードゲーム」のプログラミングのごくごく一部なの。

そういう初歩的なこともわかってないのがバレバレなの。

77 :デフォルトの名無しさん:2014/09/22(月) 13:39:12.79 ID:KDn0JvdI
「アセンブラで書く」とか言ってる時点でお察し

78 :デフォルトの名無しさん:2014/09/22(月) 13:50:35.67 ID:zDNDYNbQ
えっ・・・

79 :デフォルトの名無しさん:2014/09/22(月) 13:52:06.84 ID:jhj0pzxy
本人がお察しだったようだ

80 :デフォルトの名無しさん:2014/09/22(月) 13:52:47.02 ID:jhj0pzxy
なんだ、「アセンブリ言語で書く」が正しい、という意味かw

81 :デフォルトの名無しさん:2014/09/22(月) 14:04:09.24 ID:KDn0JvdI
探索ルーチンは確かにボードゲーム全体のコード量と比べたら小さいけど
その関数とそれが呼び出される関数で見たら影響は大きい
初歩的なこともわからないとか言ってる時点でただ煽りたいだけなんだろうけど

82 :デフォルトの名無しさん:2014/09/22(月) 14:32:52.64 ID:jhj0pzxy
> ただ煽りたいだけなんだろうけど

このスレで「一ミリ秒でも速く」と言ってるおまえがな。

83 :デフォルトの名無しさん:2014/09/22(月) 14:41:39.17 ID:zUzK8u9G
一ミリでも遠くに飛ばしたい
男の甲斐性
トピュントピュン

84 :デフォルトの名無しさん:2014/09/22(月) 14:42:12.30 ID:fbKvYZVr
Lispで書いてみてどうしても速度が気に入らないなら
Cなりアセンブラなりで書き直せば?

85 :デフォルトの名無しさん:2014/09/22(月) 14:59:33.62 ID:zUzK8u9G
斡旋フリー?
エヘヘ、本番できる?

86 :デフォルトの名無しさん:2014/09/22(月) 16:40:28.76 ID:TZpz70lm
少しでも速くするために先攻と後攻のルーチンを別に定義する部分やループを展開した書き方をする部分は
柔軟なマクロのあるlispが有利だと思った

87 :デフォルトの名無しさん:2014/09/22(月) 18:33:23.19 ID:A5LkEIU6
やねうらおが昔そんな話書いてた
http://labs.yaneu.com/20090905/

88 :デフォルトの名無しさん:2014/09/22(月) 19:15:14.18 ID:vIHnf5mS
今日schemeの実装終えた
勉強になった

89 :デフォルトの名無しさん:2014/09/22(月) 21:15:48.35 ID:vh/Af1aB
scheme→Cのトランスレータを作れば敵がいなくなる

90 :デフォルトの名無しさん:2014/09/22(月) 21:19:33.61 ID:TZpz70lm
敵はそこまで弱くない

91 :デフォルトの名無しさん:2014/09/22(月) 21:48:26.96 ID:hgHWAqnH
チキンなので敵前逃亡

92 :デフォルトの名無しさん:2014/09/23(火) 01:41:59.82 ID:Yz+1g6sQ
彼の敵はもっと高いところに居るんだろう。
目標高いって素晴らしいやん。

93 :デフォルトの名無しさん:2014/10/06(月) 16:40:18.09 ID:drMhmn/H
俺もこういう俺様言語作りたい。基本Schemeとのこと。プリプロセッサにかけるだけ。


209 デフォルトの名無しさん sage 2014/10/05(日) 15:35:13.47 ID:37iiGiPw
>>164

define seq(n){
  define seq1(m,n1,n2,n3,n4){
    if(m = n)
      (n1 + n2 + n3 + n4)
    else
      seq1(m + 1,n1 + n2 + n3 + n4,n1,n2,n3)
}
  seq1(6,3,2,1,0)
}
seq(10000)
1455650563828306671891266930369....

94 :デフォルトの名無しさん:2014/10/06(月) 17:37:21.84 ID:Gl61S3h8
元発言はどのスレ?

95 :デフォルトの名無しさん:2014/10/06(月) 18:26:46.05 ID:DaOiROEZ
まぁ、そこまで意欲的なものをいきなり作るのは大変だろうから、まずは
「構文がS式のPascal」みたいなものを作ってみたら?

96 :デフォルトの名無しさん:2014/10/06(月) 18:29:33.66 ID:QJRx0X30
>>93
簡単だよ。資料はここ。
http://homepage1.nifty.com/~skz/Scheme/sapphire.html

Gaucheでもリードマクロを使えば割と簡単にできると思う。

97 :デフォルトの名無しさん:2014/10/06(月) 18:38:16.03 ID:7Yf7z2yP
>>94
プログラミングのお題スレ Part5
http://peace.2ch.net/test/read.cgi/tech/1411227287/

>>96
サンクス、勉強してみる

98 :デフォルトの名無しさん:2014/10/06(月) 18:40:01.95 ID:7Yf7z2yP
>>95
いろいろやってみる。
まだ、Scheme上でSchemeインタープリター実装の勉強段階だけど

99 :デフォルトの名無しさん:2014/10/06(月) 20:56:28.09 ID:JOYgfRo1
>>93
rubyの処理系のコードをいじった方がはやいと思う

100 :デフォルトの名無しさん:2014/10/06(月) 21:05:49.44 ID:0Gu/ZxPo
>>93
Lispで普通に書いた方がよくね?
なんでわざわざ対応したエディタも無い言語にしたがるのかマジでわからん

101 :デフォルトの名無しさん:2014/10/06(月) 21:18:58.22 ID:vQmjb8cS
世間一般ではS式は迫害されるらしいよ

102 :デフォルトの名無しさん:2014/10/06(月) 21:29:40.64 ID:Gl61S3h8
C 風の表記が欲しいならそういう言語使えやって話になる。
Lisp に C 風の外観を与えるのは悪いわけじゃないけど、
それで Lisp らしさを捨ててしまうのなら Ruby や JavaScript と比べて勝るところは何があるっていうんだ?

自分が欲しい俺俺言語を簡単に定義できる例としてなら有用だけど、
それを仕様として固めて広く使ってくださいってことになると、
Ruby では駄目なんですか、 JavaScript で駄目な理由は何ですかってことになる。
そこらへんのポリシーがうまく説明できてない感じ。

うまく説明できてないだけにも見えるので、
何をしようとしているのかをもちっと踏み込んだ説明が欲しいな。

103 :デフォルトの名無しさん:2014/10/06(月) 21:36:10.74 ID:JOYgfRo1
>>102
携帯やエミュレータ用のコンパイラを作らされたことなら何度か

104 :デフォルトの名無しさん:2014/10/07(火) 03:12:08.82 ID:WXeOZ0gk
>>102
意義を議論する以前に、恐らくはまだ作った本人でさえまだほとんど使ってないんじゃないか。
良くも悪くもまだ単なるオモチャだと思う。普通に考えればデバッグは複雑になるはずだけどどうやってるの、とか気になる、

105 :デフォルトの名無しさん:2014/10/07(火) 04:07:57.75 ID:C9GpiM2R
>>102
あほか

106 :デフォルトの名無しさん:2014/10/07(火) 13:35:29.80 ID:4nlgcGJf
>>104
仕様がこなれてないのは使い込み不足だろうからこれからに期待ってことでいいけど、理念については説明が下手なのと視野狭窄だと思う。

Lispを学ぼうとする人にとっつきやすい文法を提供できるというのはよいと思うよ。
でも、そこには暗黙の想定があって、「Lispを学ぼうとしている」という大前提があるわけ。
そういう想定がなくて、言語に選択肢がある状況で「とっつきやすい (しかし、少し制限された) Lisp から始めて最終的には Lisp を使えるようになりましょう」と
「Ruby を学びましょう」ならあえて前者を選ぶかは疑問。
Lispを使う動機がない人にとってはアピールにならない。

書いてる人にとってはLispを使うのがあまりにも当然の大前提という感じになっちゃってて説明するまでもないと無意識に思っちゃったのかな。

107 :デフォルトの名無しさん:2014/10/07(火) 19:57:23.15 ID:0fgCkF+s
>>106
メタなものに興味があってLispを覗いてみたらカッコだらけで、
「ゲッ!やめた、おれRubyにする」ってヤツもいるんじゃないの。
あと、Lisperに得意そうにへんちくりんなマクロを見せつけられて、
「だめだわ、オレ、Rubyがいい」なんてのもいそうだけど。

108 :デフォルトの名無しさん:2014/10/07(火) 20:39:36.96 ID:4zn5sOBS
カッコなしで同相性(データとプログラムの形が同じ)を維持するのも難しいと思う

109 :デフォルトの名無しさん:2014/10/07(火) 21:28:52.88 ID:R2Wn2gKK
>>108
確かにその通りなんだが、Lispの売りってそれだけか?

110 :デフォルトの名無しさん:2014/10/07(火) 21:53:18.79 ID:4zn5sOBS
>>109
というか、「同相性があればそれはLispだ」と強弁してもいいかと

111 :106:2014/10/07(火) 22:10:21.90 ID:4nlgcGJf
>>107
そうだよ。 そういう色んな状況が想定できるんだよ。
で、目線が違うと「それはメリットじゃないよね」っていう疑問になっちゃうこともあるから、
立場をきちんと表明しなきゃね、前提を共有できるような記述が欲しいねっていうことを言いたいわけ。

112 :デフォルトの名無しさん:2014/10/07(火) 22:49:23.85 ID:R2Wn2gKK
>>111
前提は確定的なものではないだろう。人間の考えは変化する。
将来、メタなものに興味を持つ可能性のあるものも含めて広い間口を持たせるということでいいのではないかね。

113 :デフォルトの名無しさん:2014/10/08(水) 15:22:17.94 ID:vDaEL9hJ
>>112
いいよ。 悪いなんて思ってないよ。
だけど、その場合には別目線で見ている人には意義が伝わらないというデメリットが残るってだけ。
俺自身はある程度さっすることは出来てるけど、もやっとした気持が残るくらいには伝わってない。
伝わらなくてもいいという決断もひとつの決断だし、それはそれでもいい。
でも、たぶんだけど、これはそういう決断の結果じゃなくて言葉足らずなんじゃないかなという風に見えたんだよ。

114 :デフォルトの名無しさん:2014/10/08(水) 18:04:40.36 ID:bn7UbsnZ
俺低学歴なんだけど
Scheme使ってもいいかな?

115 :デフォルトの名無しさん:2014/10/08(水) 18:08:10.95 ID:WnZHVY78
いいよ
どんどんいけ

116 :デフォルトの名無しさん:2014/10/08(水) 19:04:34.66 ID:bn7UbsnZ
おk
漏れ逝ッキマース

117 :デフォルトの名無しさん:2014/10/08(水) 19:05:53.99 ID:MR5bnFdN
きてぇ



                          ,. --ヾ- ,,.. ._
                        .´ス;/;::;:::::::::::::::::ヽ
                         レ|. |A:::,::::,::::::::::::ヽ、
                         r'´ レ|::/::::::::::::::゙i゙iヽ
                     は  └.、″|r.y::::::::::::::| ゙!|
                     あ   `┘ ,.-"::::::::::::::::::/W 
                          ` ̄| /ル::::::::;/レ
           は             / ̄`゙   Y
           あ       ,.- 、    !   r  , 、|
              / ̄ヽ /   ヽ   ゙!  .| ノ | .|
            /    \ .i.  ヽ   |゙i  i  ' ./   
           /   入.   \゙i   \/ | ゙i   /|    は
         /  ,.-'  ∧.     \  /  | ` | / |   あ
  n、    ./  ,._'´`-.、/ 入     `-"  ゙i  .|/"´
  ミ ` - ノ  / `' .、 , /   \      、|  |
  ^ー-、 , /     ヽ_.」'    \    , | .|
     .ー´              ` 、__.ノ_r'" ヽ
                         ゝ!_'uu_/

118 :デフォルトの名無しさん:2014/10/08(水) 22:59:01.70 ID:0paumalo
>>113
ご忠告に感謝。さようなら。

119 :デフォルトの名無しさん:2014/10/09(木) 20:02:34.79 ID:2I5fPL3p
マクロもS式も結局は同図像性に帰結するし

120 :デフォルトの名無しさん:2014/10/09(木) 21:07:13.47 ID:ToqCSFg7
LISPの谷のうたにあるもの
「構文木を書き下し S式と共に生きよう
マクロと共に展開器を越え 括弧と共に抽象を謳おう」
どんなに強力な構文を持っても、
たくさんのかわいそうな構文解析器を操っても、
S式から離れては生きられないのよ。

121 :デフォルトの名無しさん:2014/10/09(木) 21:09:49.21 ID:gtZnoAyG
糖衣構文は人類の夢なのに

122 :デフォルトの名無しさん:2014/10/10(金) 03:07:33.10 ID:rjmpfVYQ
>>121
そんなものに頼ってるから言語が太るんじゃねぇの?

123 :デフォルトの名無しさん:2014/10/10(金) 10:08:24.57 ID:5qJNOMhH
SCHEMEは機能を積み重ねるのではなく、ユーザがしたいことを邪魔しないという目標がある。
言語が構文糖を持つんじゃなくて、構文糖が欲しいと思ったときにそれが出来るようになってるのがSCHEME的な解決方法で、
つまり、処理系としてはリーダをカスタマイズする方法を用意するべき。
もちろん誰もが納得できるような便利な構文糖は仕様に入れることを検討してもいいし、
誰もが納得とは言わなくても十分に便利なものは処理系の裁量で使えるようにすればいい。

124 :デフォルトの名無しさん:2014/10/10(金) 10:24:12.36 ID:B0QuKe5M
それぞれのプロジェクトに合わせて勝手にマクロ書いてねってことか

125 :デフォルトの名無しさん:2014/10/10(金) 11:22:49.70 ID:M4qvcHEh
糖衣構文はむしろ言語が不必要に太るのを防ぐものだが?
見た目だけのためにコア言語を拡張しないで済むのが糖衣構文なんだから。

126 :デフォルトの名無しさん:2014/10/10(金) 23:49:40.22 ID:5CO3UGgv
マクロと特殊構文って違うものなの?

127 :デフォルトの名無しさん:2014/10/11(土) 00:02:30.31 ID:5xt1wBHG
while(1)とfor(;;)くらいの違いはあるかも

128 :デフォルトの名無しさん:2014/10/11(土) 00:23:05.97 ID:F3plGA7W
マクロの限界を超えたのが構文

129 :デフォルトの名無しさん:2014/10/11(土) 00:33:41.99 ID:uQnh3Z1K
全部lambdaで実装できるからといって、全部マクロでやってるわけじゃないのね

130 :デフォルトの名無しさん:2014/10/11(土) 01:26:28.73 ID:PP2ywDPj
Lisp 全般ではどうだか知らないけど Scheme の場合は特殊構文といういう言葉はない。
実装上は区別があるから無いわけではないんだけど、
仕様上は機能が特殊構文であるべきかマクロであるべきか明確な記述はなくて、
全部一緒くたに「構文 (syntax)」となってる。
do や let みたいにマクロで実装可能なものであっても処理系が特殊構文として持ってもいい。
let を特殊構文にして lambda をマクロで提供したって仕様には適合する。

131 :デフォルトの名無しさん:2014/10/11(土) 09:55:40.96 ID:oD37Hh5X
lambdaで実装できるならマクロでなくて関数じゃないか。

基本的にマクロや特殊形式は関数にはできないもの(ifとか)。
>>130 が説明しているように、言語組込みの特殊形式にするか、
あらかじめ定義されているマクロにするかは、どっちでも良いことも多い。
(ifとcondの、どっちが組込みでどっちがマクロかは、使う側からすればどちらでも良い)

どうしても組込みでないと困るのはdefmacroとかw

132 :デフォルトの名無しさん:2014/10/11(土) 10:52:02.00 ID:zYQ8fNL5
defmacro って伝統的マクロのことかな。
explicit renaming などを組込で用意してそれを使って伝統的マクロの API を作ることは出来るので、
defmacro が組込でないといけないということもないんじゃないの。

133 :デフォルトの名無しさん:2014/10/11(土) 15:18:16.66 ID:F3aAgYiV
SRFI49のI式やSRFI110のT式を使えば、
Lisp、S式を全く知らない人に知らず知らずのうちに使わせることが可能・・・?

134 :デフォルトの名無しさん:2014/10/11(土) 16:00:16.01 ID:zYQ8fNL5
それは微妙かも。 要はS式の風味を消しきれてないんだよ。
S式に慣れたベテランにとっては変換を間に挟むのは余計だし、
初心者にとってもそれほどやさしくない気がする。
S式を完全に置き換えられるように設計されてるせいで、
言語としては不自然さがある。
S式をわかった上で少し読みやすい (書きやすくはない) 記法って感じじゃないかなぁ。

一方で、>>96 はそういうこと考えないで言語として自然になることを目指してるみたい。
それと引き換えにちょっと制限が出来てしまってるけど、
S式を意識しないで済むのでT式やI式よりは初心者向けかな。

どこかで妥協は必要だと思う。

135 :デフォルトの名無しさん:2014/10/11(土) 16:19:27.80 ID:zYQ8fNL5
そんでもってT式は妥協点がまずいと思う。

I式はS式の表現力そのままでちょっと括弧を削減できますって感じなわけで
見かけはあまり変わらないけどS式通りの表現力を持つことに寄った妥協点。
sapphaireはC風の見かけに寄った妥協点。

T式は両方取りで無茶しすぎ。

136 :デフォルトの名無しさん:2014/10/11(土) 16:29:12.31 ID:/fEev8Cq
C++がlispのマクロを取り入れるって話がある気がするけどどうなんだろ

137 :デフォルトの名無しさん:2014/10/11(土) 16:31:00.49 ID:uQnh3Z1K
#define と lisp が入り乱れる悪夢しか見えないのだが…

138 :デフォルトの名無しさん:2014/10/11(土) 17:03:06.62 ID:6k35EUsC
これ以上に魔界言語化させる気か

139 :デフォルトの名無しさん:2014/10/11(土) 17:12:18.52 ID:LAagPdIX
>>136
なにその鼻から悪魔
むしろLisp界隈がC++が培ったコンパイラ最適化技術を取り込む方がよくね?

140 :デフォルトの名無しさん:2014/10/11(土) 18:22:50.18 ID:Qq+hYVrD
そんな明らかに地獄を見るC++なんかより、静的型と必要呼びを取り入れよう。

141 :デフォルトの名無しさん:2014/10/13(月) 20:48:56.69 ID:8z+wIHiS
ネット上の記事でREPL開発が便利という言葉が結構出てきますが
その内容は大抵併記されてないしどういうものかあんまりわかってないんですけど
要はREPLを内部データの完全読み書き可能なデバッグコンソールとして使うっていうだけのことであってますか?

142 :デフォルトの名無しさん:2014/10/13(月) 21:16:45.97 ID:qNsxmj1V
>>141
REPL が無いと関数を書いて確認するまでの負荷が高過ぎと感じるね。
大きな関数を書いて苦労してデバッグするより、小さな関数を沢山書いて組み合わせる方が自分は好きだ。そういうスタイルで開発するとき、REPL は必須だと思う。

143 :デフォルトの名無しさん:2014/10/13(月) 21:22:14.70 ID:dPMNKuH4
REPL は思いつきを次々とチェックしていくのに便利よ

144 :デフォルトの名無しさん:2014/10/13(月) 21:25:32.35 ID:ncL9fWtV
lispに限らずpythonとかrubyとかforthとかjavascriptにもあるだろ

145 :デフォルトの名無しさん:2014/10/13(月) 21:44:12.87 ID:qNsxmj1V
REPL とそうでないときの動作が微妙に違う言語が最悪。

146 :デフォルトの名無しさん:2014/10/13(月) 22:00:22.98 ID:dPMNKuH4
ROOTのことかー!

147 :デフォルトの名無しさん:2014/10/13(月) 22:05:54.07 ID:+mHw5fpq
今日自分用repl作り終わった
勉強になったな

148 :デフォルトの名無しさん:2014/10/13(月) 22:06:23.86 ID:+mHw5fpq
今日自分用repl作り終わった
勉強になったな

149 :デフォルトの名無しさん:2014/10/22(水) 19:51:20.26 ID:6k6LHIEO
>>148
そういう日記帳みたいなことを書くんじゃなくて、どんな学びがあったのか概要だけでも書いて欲しい。

150 :デフォルトの名無しさん:2014/10/23(木) 21:37:25.94 ID:E2rgpAny
うーん
チンコは朝が元気いい!
とかかなあ

151 :デフォルトの名無しさん:2014/10/23(木) 21:41:16.41 ID:QudRNv+h
任意のS式をC言語の関数に変換できれば、高速のlisp実行系ができると思ってやってみたら吹いた

152 :デフォルトの名無しさん:2014/10/23(木) 21:51:59.95 ID:5OLrkwOF
最初にできたcommon lisp処理系がそのやり方だったんじゃ

153 :デフォルトの名無しさん:2014/10/23(木) 21:53:03.66 ID:E2rgpAny
うーん
The Little Lisperを終えて
適用順Yコンビネータは感動した
第2版の
The Little Schemerも初版とちゃうあたりからやるかとやっていたら
8 lambda the ultimete
で、いきなりわけわからんものが出てきた。その後を読んで環境を保持したclosureの伏線だと分かったが
テキストではふれてないが、いわゆる
末尾再帰の方法の1つでもあるなと思った
末尾再帰させる?どうなるの?
わからないままきていたが分かって勉強になった
試しにフィボナッチを計算させると
もう非while記述と同じように速い!
(あたりまえだけど)
感動!
Lisp/Schemeっておもしろいね

154 :デフォルトの名無しさん:2014/10/23(木) 21:53:52.34 ID:E2rgpAny
続き
ただ、引数に値を蓄積していく方法ではなく、引数関数の拡張テーブルに値を渡していく方法だった。
主眼は末尾再帰ではなくclosure・閉包
にあるからだろう

(define foo
(lambda (l func)
(if (null? l) (func 0)
(foo (cdr l)
(lambda (x)
(func (+ x 1)))))))

> (foo '( a b c d e f g) + )
> 7

とこんな具合の再帰が出ていた。
(テキストではmultiremberEco)

155 :デフォルトの名無しさん:2014/10/24(金) 00:48:52.41 ID:gX1HSK/N
フィボナッチとフィボノッチ

156 :デフォルトの名無しさん:2014/10/24(金) 01:57:05.92 ID:f45GzPjn
>>151
何がどう吹いたの

157 :デフォルトの名無しさん:2014/10/24(金) 10:34:08.90 ID:Ypc7oszp
>>154
継続渡しって訳か

158 :デフォルトの名無しさん:2014/10/24(金) 16:54:19.69 ID:lofQKPiQ
>>157
まだ継続は勉強してないから俺には継続渡しかどうかわからない
もうすぐ継続やるらしいけど
the little schemer

159 :デフォルトの名無しさん:2014/10/25(土) 00:12:21.42 ID:mxSUw+2R
GCは失敗スレについてここの人はどう思う?(今なんか荒らされてるけど)
おれは失敗だと思う
今でこそ普通に動かす環境が存在するけど富豪的環境を想定しすぎていた
あといずれシステムやランタイムがGCでプログラムを勝手に止めるのが我慢ならない
GCの無いLISP作れると思いますか

160 :デフォルトの名無しさん:2014/10/25(土) 00:22:36.19 ID:ysiqAjTq
> あといずれシステムやランタイムがGCでプログラムを勝手に止めるのが我慢ならない
世代別GCのアルゴリズムではそんなに長い時間止まらないのでは
> GCの無いLISP作れると思いますか
作れるんじゃないですか
今でもGCをオンオフして好きなように出きるはず

161 :デフォルトの名無しさん:2014/10/25(土) 00:58:13.95 ID:uFZNQhFz
そもそもおまえらが成功とか失敗を決めてなんか良いことあるの?
GCの無いLISPはLinear Lispでググれよ

162 :デフォルトの名無しさん:2014/10/25(土) 02:12:39.72 ID:mxSUw+2R
良いことはあるでしょ
それを使っていいのかの判断基準にできる
GCを動かさないように「気を付けて」組むことはできるけど
そんなものは最初から無いに越したことないから
Linear Lispは平たく言えば参照カウンタ方式ってことね
参考になったよ

163 :デフォルトの名無しさん:2014/10/25(土) 02:14:13.66 ID:Av5WAXbh
広く採用されて使われてるんだから成功なんじゃないの
あとは問題に対して使うか使わないかという選択があるだけでは

164 :デフォルトの名無しさん:2014/10/25(土) 02:27:34.11 ID:zinHr5aI
参照カウンタってGCの一種やろ?

165 :デフォルトの名無しさん:2014/10/25(土) 02:31:07.48 ID:mxSUw+2R
いや、逆に広く採用されてしまったのは失敗だよ
リソース確保しまくってまともに開放されずにシステムを糞重くする原因だし
メモリ管理はこうせなあかん的な思想の頑固一徹に
ちまちま組ませてた方が良質なソフトを期待できたのでは
ちゃんとメモリ管理してれば1GBもあってまだ足りないなんて状況にはならなかったと思うよ

>参照カウンタってGCの一種やろ?
ちゃんと理解できてないからこういう人も出てくる

166 :デフォルトの名無しさん:2014/10/25(土) 02:39:31.57 ID:Dd1PybT8
なんだ病人か

167 :デフォルトの名無しさん:2014/10/25(土) 02:40:25.96 ID:Av5WAXbh
糞を作る糞はたとえGCがなくたって糞を作ると思うけど
まあそんなの確かめようがないんで、あとはGCスレでやって

168 :デフォルトの名無しさん:2014/10/25(土) 02:41:13.75 ID:mxSUw+2R
念のために書いとくと
参照カウンタはプログラマが自分で開放タイミングを制御できるからGCではない
GCってのは自分で参照切ったりして手放したつもりでも
GC側の都合でそれがいつ開放されるかは判らず
プログラムがGC発動によって強制停止されるか判らない中
戦々恐々しながら使うやつのことね

169 :デフォルトの名無しさん:2014/10/25(土) 02:44:46.55 ID:zinHr5aI
解放タイミングが自明なら参照カウンタ自体使う必要がないんですがね。
お前参照カウンタを使ったこと無いだろ。
ていうかLISPのコードを書いたこともないだろ。

170 :デフォルトの名無しさん:2014/10/25(土) 02:54:26.49 ID:mxSUw+2R
レッテル貼りレスばかりしてて虚しくないかね
参照カウンタの理解も足りてないし
GCと共存するしかないLISPスレだとこれが限界なのか

171 :デフォルトの名無しさん:2014/10/25(土) 02:58:12.54 ID:LRzO9l4w
GCは参照カウント式とトレーシング式に大別される
参照カウントもGCだ

172 :デフォルトの名無しさん:2014/10/25(土) 02:59:05.77 ID:gAvv+xng
GCの定義が独自すぎて話が通じないぞ・・・

173 :デフォルトの名無しさん:2014/10/25(土) 03:01:54.06 ID:mxSUw+2R
もしかして用語が気に入らないの?
用語の定義なんて今更ここて議論したくないから
参照カウンタとLISPとかで使う停止を伴なうGCの区別だけでいいよ

174 :デフォルトの名無しさん:2014/10/25(土) 03:04:50.16 ID:mxSUw+2R
ここで話すこともあまりないんだけど
あっちがなぜか荒らされ始めてるっぽんで避難というか
まともっぽい話ができぞうなスレにちょっとお邪魔してもいいかなと
付き合ってくれてありがとね

175 :デフォルトの名無しさん:2014/10/25(土) 07:23:22.81 ID:Xx23882P
GCないとCでfree忘れるだけで大惨事だし

176 :デフォルトの名無しさん:2014/10/25(土) 07:49:28.18 ID:jjsP8liH
解放し忘れはまだマシな方
誤って解放済みの領域にアクセスしてセキュリティ上の問題が発生するなどということが現実に起きてる以上
その危険を避けられるだけで一定の価値があると思う

177 :デフォルトの名無しさん:2014/10/25(土) 09:24:25.55 ID:4HszNCxA
参照カウンタはGCテクニックの一つだぞ、古い物で最も有名なのはSmalltalkの実装で使われてるじゃねぇか
まさかと思うがC++のshared_ptrの事しか知らないとか言うんじゃないだろうな?>>170

178 :デフォルトの名無しさん:2014/10/25(土) 11:29:27.19 ID:PP/2Zeey
> あっちがなぜか荒らされ始めてるっぽんで避難というか
> まともっぽい話ができぞうなスレにちょっとお邪魔してもいいかなと

荒らされ方では互角だと思うけどなw
サンプルはお前

179 :デフォルトの名無しさん:2014/10/25(土) 13:21:34.42 ID:Zpg9z+IV
人の意見は聞かず自分の言いたいこと言うだけ言って満足して去っていったな

180 :デフォルトの名無しさん:2014/10/25(土) 13:49:24.99 ID:WTYSbDLf
「○○が嫌なら○○のないlispを作ればいいじゃん」 と断言できるのがlispのよいところ

181 :デフォルトの名無しさん:2014/10/25(土) 15:06:36.06 ID:Zpg9z+IV
○○にS式を入れたらどうなんの

182 :デフォルトの名無しさん:2014/10/25(土) 15:19:00.68 ID:gAvv+xng
>>96みたいなことになるんじゃね?

183 :デフォルトの名無しさん:2014/10/25(土) 15:22:01.04 ID:Av5WAXbh
家に怖いエイリアンがきてS式が出てくるまで無限にmacro-expandされる

184 :デフォルトの名無しさん:2014/10/25(土) 15:32:48.10 ID:pFSvQRs9
http://route477.net/d/?date=20071112
>「コンピュータプログラムの世界において M式 (meta-expressions) は、 Lisp言語の一部として、S式の人間が読むことの出来る
>形態となることを目的に考えられた。 M式はLispの初期の論文において理論的な言語として使われていたが、実際に実装されることはなかった。 」
>
>S式は人間が読むもんじゃないのかよwとツッコミたくなりますね。

>(M式のほうが)だいぶ「普通」なんだけど、LispプログラマはすぐにS式に慣れてしまったので M式は普及しなかったみたいです。
>S式はプログラムとデータが同じ構造をしている(ので、マクロが使いやすい)けど、M式はそうじゃないですからね。

185 :デフォルトの名無しさん:2014/10/25(土) 20:24:07.28 ID:WTYSbDLf
>>184
文とメタ文が同じ記号と構造を持ってると読みにくいという意味だと思っていたが、もしかしてS式も読みにくいモノだったの?

186 :はちみつ餃子 ◆8X2XSCHEME :2014/10/25(土) 20:57:34.99 ID:uwSWCjXz
参照カウンタがGCではないという解釈は非常識だけど、
解放のタイミングがコンパイル時に確定できる場合とそうでない場合を自動で検出して最適化するとか、
言語に制限を加えて常に確定できるようにするとかいった方向でなら面白いことが出来そうな気もする。

187 :デフォルトの名無しさん:2014/10/25(土) 21:05:24.23 ID:WTYSbDLf
そもそも、プログラマには、メモリ回りをいじらせない方がいいという結論だったはずだが…

188 :はちみつ餃子 ◆8X2XSCHEME :2014/10/25(土) 21:13:03.42 ID:uwSWCjXz
可能な限り自動化するに越したことはない。
でも、トレードオフのある話だから一概に言えないんじゃない?
結論ってどこの結論?

189 :デフォルトの名無しさん:2014/10/25(土) 22:02:53.74 ID:mzA+eg7p
オレオレ

190 :デフォルトの名無しさん:2014/10/25(土) 23:04:51.11 ID:8hz22B7t
GCは失敗という意見を持ってる人は
GCをよく理解してないように見えるんだけど気のせいかな

191 :デフォルトの名無しさん:2014/10/25(土) 23:05:59.02 ID:Av5WAXbh
いなくなった悪魔を再召喚する儀式はやめよう(提案)

192 :デフォルトの名無しさん:2014/10/25(土) 23:07:35.44 ID:WTYSbDLf
lispに失敗はない
○○を失敗したなら、○○を失敗しないlispを作ればいいのだから

193 :デフォルトの名無しさん:2014/10/25(土) 23:11:47.81 ID:8hz22B7t
○○にlispを入れたらどうなんの

194 :デフォルトの名無しさん:2014/10/25(土) 23:13:41.36 ID:WTYSbDLf
>>193
schemeになる

195 :デフォルトの名無しさん:2014/10/26(日) 00:51:18.48 ID:zX2i/6mV
>>193-194
ワラタ

196 :デフォルトの名無しさん:2014/10/26(日) 02:06:41.32 ID:uu/zqtNw
>>190
だよなぁ。
メリットもデメリットもあって状況によって使いわけるという当たり前の判断が出来てない。

197 :デフォルトの名無しさん:2014/10/26(日) 02:09:49.85 ID:8/HAOo0u
そもそもGCが動くタイミングさえ熟知してれば古来からのメモリ管理法とほぼ同等の管理もできるんだよなあ・・

198 :デフォルトの名無しさん:2014/10/26(日) 07:44:25.19 ID:+iDsoHsQ
(GCってガベージコレクターなんだな、ググってわかった)

199 :デフォルトの名無しさん:2014/10/26(日) 08:20:55.04 ID:MmXJ9dwt
lispでもメモリを自分で管理するのが一番だね。あんまり情報がないから自分で調べる必要があるけど。
個人的には任意精度の数値が扱える機能がむしろオプションだったら良かったと思う。そしたらCっぽい計算が楽なのに。

200 :デフォルトの名無しさん:2014/10/26(日) 12:58:57.86 ID:uXBn6mUw
コンスプールってどれくらい効果的なんだろう

201 :デフォルトの名無しさん:2014/10/26(日) 13:35:01.58 ID:eoLX8RNk
>>190
最近のスマホはメモリ空間が狭いのにアプリがたくさん動きかつアプリの生存期間が長くなってしまっている‥
メモリコンパクションも、そもそもOSのメモリ管理すらも、いうほどにはあまりうまくいっていないなという感想を持つ人間が多くなったんじゃないかな

202 :デフォルトの名無しさん:2014/10/26(日) 13:57:25.11 ID:eoLX8RNk
>>186
こちらの人はそう考えるのか‥参照カウンタは循環参照を扱えないからね‥

203 :デフォルトの名無しさん:2014/10/26(日) 13:58:31.21 ID:yJlRO0wF
昨日の荒らし君が再召喚されたの?

204 :デフォルトの名無しさん:2014/10/26(日) 14:11:13.09 ID:zX2i/6mV
>>202
参照カウンタとMarkSweepを世代別にすることで併用するとか最近のGC事情はイロイロあるのだが?

205 :デフォルトの名無しさん:2014/10/26(日) 14:16:34.35 ID:hfKOgb2x
>>203
まあ参照するからGCされないんだろうねえー

206 :デフォルトの名無しさん:2014/10/26(日) 14:30:32.77 ID:eoLX8RNk
>>204
Mark&Sweep と世代別管理が併用されることがあっても、参照カウンタが世代別管理と併用というのはあまり考えられないのでは‥
循環参照が発生した!とランタイムで検出することは可能なの?

207 :はちみつ餃子 ◆8X2XSCHEME :2014/10/26(日) 15:42:27.41 ID:uu/zqtNw
そうなの?

循環参照の検出はそんなに難しくない。 定番の練習問題だろ。
だけど、実行コストはそれなりに大きいから走査のたびにやるのは性能的に厳しいと思う。
何度かに一度だけとかいった形にする必要があるんで、それを世代ごとに区分するのはいいアイデアな気がする。

208 :デフォルトの名無しさん:2014/10/26(日) 15:57:52.82 ID:eoLX8RNk
>>207
>実行コストはそれなりに大きい
そう、つまりMark&Sweep そのものだよね
となると、参照カウンタの世界と、Mark&Sweep とかコピーGC とかの世界とは相容れないとおもっているんですが‥

209 :デフォルトの名無しさん:2014/10/26(日) 16:37:54.31 ID:o1ENwHOW
incremental(real time)GC採用しているschemeなりlispの処理系ある?

210 :デフォルトの名無しさん:2014/10/26(日) 16:42:27.33 ID:eoLX8RNk
BoehmGCを使っていたらなんでもそうなるかと‥

211 :デフォルトの名無しさん:2014/10/26(日) 17:00:57.07 ID:zX2i/6mV
>>206
参照カウンタが通常世代まで(edenは別)のGCで使って、Old Space巻き込むFullGCの時にはMark & Sweepって実装は有るよ。
Mark&Sweepなら参照カウンタで循環したオブジェクトも除去される

って言葉で書くと簡単なのに実際に世代別かつ複数検出使うと効率的なGCを行おうとすると死ねる、つか一回死んだ(タグ付きメモリのハード欲しい!!!)、JavaとかSqueak作ってる連中はすげぇと思う。

212 :デフォルトの名無しさん:2014/10/26(日) 18:18:54.84 ID:RPezmOOm
君たちには明示的にGCすると良いことがあるかも知れないでしょうが、君たちの指示でプログラミングする人達にとっては百害あって一利なしですよ

213 :デフォルトの名無しさん:2014/10/26(日) 22:24:50.88 ID:eoLX8RNk
>>211
なんだかよくわかりませんが、なんだか面白そうだ‥
どこぞのスレでは GC ネガキャンをやっているようですが、GC のためにハードウェアからの支援があると、なにか幸せが待っていそうですね‥

214 :デフォルトの名無しさん:2014/10/26(日) 22:31:38.19 ID:DUpdhI9s
この機会にlispマシンを。。。

215 :デフォルトの名無しさん:2014/10/27(月) 01:06:03.38 ID:WDr9CT/T
>>213
タグ付きメモリとかLispマシンだけじゃ無くて結構ハードウェア実装あるからACMの論文以外にもGC関係追いかけてみると良いかもね
;;;実売したプロセッサだとLispMachine以外無いのに(主観)
;;;論文やベンチャー企業のJavaVMの実装には出てきたりする。

216 :デフォルトの名無しさん:2014/10/27(月) 01:28:02.16 ID:0fYTvMcl
http://www.shuwasystem.co.jp/products/7980html/2562.html
>ガベージコレクションのアルゴリズムと実装
>本書は絶版となりました。

・゚・(つД`)・゚・

217 :デフォルトの名無しさん:2014/10/27(月) 01:56:52.72 ID:M9w8JU4S
懐かしい。
大学の課題でガベコレ実装しなきゃならなくて
日本語の本で探して見つけたほとんど唯一の (実際、私が見つけられた唯一の) 本だった

218 :デフォルトの名無しさん:2014/10/27(月) 02:34:10.95 ID:lzC+xCjc
>>216
良本だから書店に在庫があるうちに購入するといいよ

219 :デフォルトの名無しさん:2014/10/27(月) 03:10:29.65 ID:SAchMZc1
>>217
見付からないのは当然。 実際にこれ一冊しか出版されたことがないから。
言語処理系の本とかにGCの話題が含まれることはもちろんあるけど、
GCを体系的にまとめるってことを誰もしなかったんだなー。

220 :デフォルトの名無しさん:2014/10/27(月) 08:52:44.81 ID:U+brRazh
>>216
達人出版会でPDF版が買えるぞ

221 :デフォルトの名無しさん:2014/10/28(火) 20:51:23.04 ID:uvfLqTRT
lisp の実装本も和書では2冊だったか‥いや出たのが奇跡か?

222 :デフォルトの名無しさん:2014/10/28(火) 21:17:34.28 ID:+jM/bTCW
大学の演習でしょっちゅうやらされるイメージ

223 :デフォルトの名無しさん:2014/10/28(火) 21:29:24.12 ID:vS3GoyWK
lispのわかりやすい実装はネットにちょくちょくあるからな

224 :デフォルトの名無しさん:2014/10/28(火) 23:46:14.03 ID:NoofpkPm
lispを使うような大学で講義を受けてみたかった

225 :デフォルトの名無しさん:2014/10/28(火) 23:52:17.55 ID:+jM/bTCW
哲学や記号処理系の人工知能の講義で使うプログラミング言語はlispかprologの二択だと思ってたが、最近はhaskellも使われているらしい

226 :デフォルトの名無しさん:2014/10/29(水) 05:03:51.48 ID:HTBI3UBZ
どの大学でもLisp教えてるだろ
教授のオナニーがメインだが

227 :デフォルトの名無しさん:2014/10/29(水) 11:55:48.82 ID:BdA+2vPn
単位落とされたバカはいつまで頑張るのかなw

228 :デフォルトの名無しさん:2014/10/29(水) 16:00:21.79 ID:LP0tOaxs
やめだやめだSchemeなんてやめだ
現実に役に立たない言語なんて何の意味もない
残念だがここからはCommon Lispだ

229 :デフォルトの名無しさん:2014/10/29(水) 16:43:24.02 ID:PkrkWUB2
今三年だけど学部の講義・実験で主に使うのはCとJava
紹介程度にHaskellの話はあった

230 :デフォルトの名無しさん:2014/10/29(水) 20:26:26.71 ID:28ztFQW1
>>228
ん?継続で断念?

231 :デフォルトの名無しさん:2014/10/29(水) 20:48:48.97 ID:chStTp/6
>>228
おちつけ、実用的なlispなんてない

232 :デフォルトの名無しさん:2014/10/29(水) 21:22:09.17 ID:ChF9fM7P
Clojureとか

233 :デフォルトの名無しさん:2014/10/29(水) 21:29:50.55 ID:MDNr8+Tt
お前らの実用って何だよ。

234 :デフォルトの名無しさん:2014/10/29(水) 21:34:18.01 ID:28ztFQW1
xyzzyを好きに改造できること

235 :デフォルトの名無しさん:2014/10/29(水) 21:55:49.08 ID:4RRnfYb9
LISP処理系が作れること

236 :デフォルトの名無しさん:2014/10/29(水) 21:57:29.90 ID:MDNr8+Tt
実用できてるじゃん。

237 :デフォルトの名無しさん:2014/10/29(水) 23:48:17.03 ID:M0i1xpGq
30分でプロトタイプを作るなら、圧倒的にlisp
一方、製品版の実装は、いまだにCがメインです

238 :デフォルトの名無しさん:2014/10/30(木) 00:29:00.21 ID:pNmRznzW
そのまま製品にすりゃいいじゃん。

239 :デフォルトの名無しさん:2014/10/31(金) 21:35:21.25 ID:lPsFKl4L
>>221
遅いけどこれ知りたい

240 :デフォルトの名無しさん:2014/11/01(土) 00:25:42.74 ID:etXlBO/A
多分1冊はCプログラムブック3のことかな
実装つっても所詮インタプリタレベルだし今読んでも参考にならないよ

241 :デフォルトの名無しさん:2014/11/01(土) 00:33:25.99 ID:WIkAJECL
3impがあれば必要なことは大体わかるよ。
日本語訳があれば実装してみる人もだいぶん増える気がする。

242 :デフォルトの名無しさん:2014/11/01(土) 00:43:41.14 ID:etXlBO/A
どんな実装にもいえるけど
ライブラリが無いと残念処理系にしかならないよね
他所様のライブラリを半端に使う手段をくっ付けて完成

243 :デフォルトの名無しさん:2014/11/01(土) 00:46:17.48 ID:PUzzze1L
実用的な処理系は既存の物使う方が良いし
作ることが目的だからそういうのはどうでもいいかな

244 :デフォルトの名無しさん:2014/11/01(土) 01:05:38.66 ID:WIkAJECL
実用を考えるなら、Schemeの場合は後付けで色々拡張することが前提の仕様だから、仕様に完全準拠するだけではまだスタート地点って感じだよな。
未定義が多いのは単に議論が続いているってのもあるけど、処理系実装の裁量範囲を広くとるために意図的にやってる箇所もある。
多様な実装が出現することを期待してのことだと思う。
その中でやっぱりこうするべきだっていうのがわかることがあれば将来の仕様に反映されるかもしれない。
だからまぁ色々やってみようぜっていう感じ。

245 :デフォルトの名無しさん:2014/11/01(土) 06:58:47.07 ID:wzpJ4Ysf
だけどschemeが細部をちまちま議論しているうちに、世の中はどんどん先に行ってないか?
例えばHaskellは圏論を武器に新しい概念が沢山出てきている。テキストもある。言語仕様もちゃんと更新していってる。なんつーか、すごく活発なんだよ。
scheme が目指す言語仕様は本当に素晴らしいのかも知れないけど、動きが遅すぎる…

246 :デフォルトの名無しさん:2014/11/01(土) 07:07:00.62 ID:12FSUUrY
Haskell はピュアで制限きついから、従来の表現度を得るために新しい道具が必要とされただけ

247 :デフォルトの名無しさん:2014/11/01(土) 08:04:18.22 ID:D3jO9L85
他で新しい道具が出来たならパクればいいじゃない(ゲス顔)

248 :デフォルトの名無しさん:2014/11/01(土) 13:36:23.10 ID:Ipuv1wRP
俺の女、サイトウにパクられた
おのれ、サイトウ!

249 :デフォルトの名無しさん:2014/11/01(土) 14:11:19.10 ID:wzpJ4Ysf
むしろどんどんパクって欲しい。閉じこもってるよりはマシ。

250 :デフォルトの名無しさん:2014/11/01(土) 15:55:10.83 ID:WIkAJECL
>>245
機能を追加するのではなく邪魔なものは何かを検討して排除するのがSchemeの仕様の方針と書いてあるだろ。
だからといって処理系の実装に機能を追加するなとかライブラリは不要とか言ってるわけじゃなくて、
むしろ積極的に色々やるために仕様で縛りを付けないというスタンスだよ。
それでもやっぱり統一しとかなきゃならない基盤だと皆が合意した部分だけが仕様になってる。

決まってない部分はお前も含めた皆が自由にしていいところ。
仕様に不足があるならお前が足していいところだ。

251 :デフォルトの名無しさん:2014/11/01(土) 22:45:31.50 ID:YD1jteWQ
「○○が邪魔」 ⇒ 「○○のないschemeを作ればいいじゃん」
「○○が欲しい」 ⇒ 「○○入れればいいじゃん」

252 :デフォルトの名無しさん:2014/11/01(土) 22:56:38.73 ID:VivsCgFR
やればできるけどやらないのはやれないのと同じだと思うの

253 :デフォルトの名無しさん:2014/11/02(日) 05:39:05.33 ID:t2EpQ33q
実用性考えるととたんに継続の存在が邪魔に思えてくる
OSのフックやイベントとかコールバックとして渡す場合どうすんの

254 :デフォルトの名無しさん:2014/11/02(日) 09:14:35.48 ID:5lL/XLna
structureをコピーして、その一部のスロットを更新したstructureを返す関数を作りたいんだけど
setfでアップデートするところでエラーが出るんだ...
誰か助けて

こんな感じに使いたい。
(update-structure player :name "hoge")
(update-structure pos :x 3)

; 以下はコード
(defun update-struct (structure key value)
(let* ((head (type-of structure))
(copy-fn (symbol-function (symb "COPY-" head)))
(copy (funcall copy-fn structure))
(update-fn (symbol-function (symb head "-" key)))
)
; コピーしたstructureをアップデート
(setf (funcall update-fn copy)
value)
copy))

(setq a (make-pos :x 0 :y 0))
(update-struct a :x 3)

255 :デフォルトの名無しさん:2014/11/02(日) 09:30:39.88 ID:pF+UrMpW
>>254
どうしてこんなことしてるのかさっぱり分からないコードだ
#'(setf function)は規格に存在しないよ

構造体にslot-valueが使えるのも処理系の拡張だけど

(defun update-struct (struct key value)
(setf (slot-value struct key) value)
struct)

(update-struct a 'x 3)
--> #S(POS :X 3 :Y 0)


何がしたいのか説明がないとわからん
slot-valueは使えないって前提?

256 :デフォルトの名無しさん:2014/11/02(日) 10:58:51.49 ID:5lL/XLna
slot-value は盲点だったは、ありがとう。
環境の状態を、関数の引数に渡していく方法でゲームを作ってて、
毎回コピーしてから値の更新するのが面倒だったんだよね

大体こんな感じ↓
(defun battle (player enemy)
(battle (move player 1 2)
(attack player enemy)))
(defun attack (a b)
(update-struct b
:hp (- (player-hp b)
(player-attack a))))
(defun move (s x y)
(let ((pos-x (pos-x (player-pos s)))
(pos-y (pos-y (player-pos s))))
(update-struct s
:pos (make-pos :x (+ pos-x x)
:y (+ pos-y y)))))

; update-struct を使用しない場合
(defun attack (a b)
(let ((copy-b (copy-player b)))
(setf (player-hp b)
(- (player-hp b)
(player-attack a)))))

257 :デフォルトの名無しさん:2014/11/02(日) 12:06:38.45 ID:pF+UrMpW
>>256
update-structみたいなのは
・予めスロットの名前しか分かってない上存在しないスロットにもアクセスする可能性はある
・実行時にならないとどんな構造体が来るか分からない
こんな場合に必要になるものだと思うよ
この条件だと、規格の範囲では構造体じゃなくてクラスで作るものになる
attackのように決め打ちで(- (player-hp b) (player-attack a))を参照してるなら、使用しない例のように#'(setf player-hp)で良いような気がするんだけど
どうしてもメタプログラミングしたいんならマクロでコード生成とか
単に書くのが面倒だからってことだけど
(defattack player (a b) ...)
(defbattle player (a b) ...)
(defmove enemy (a b) ...)

258 :デフォルトの名無しさん:2014/11/02(日) 12:23:57.54 ID:XQzpc1uY
>>252
ちがうだろ
やればできる->子供が作れる
やれるけどやらない->彼女がいる
やれない->彼女は居ない

259 :254:2014/11/03(月) 10:19:24.10 ID:XxOwxkeb
>>257

色々考えた結果
(setf player-hp)で更新するのが無難っぽいですね。


プレイヤーがスタミナをもっていて、
攻撃するときに自分のスタミナを減らして、相手のHPを減らすような場合とかもあるし

2つ以上のユニットを同時に更新とかが入る可能性があるな

260 :デフォルトの名無しさん:2014/11/03(月) 18:38:21.42 ID:6XOYW1Vp
>>252
そうかんがえるのが健康的だな

やればできるなんてのは、大概は
性格的にできない、継続できないアホの言い訳


>>258
オマエは、馬鹿すぎる

261 :デフォルトの名無しさん:2014/11/03(月) 21:06:28.82 ID:lTQEoFp8
見た目が同じものは本質的に同じ
従って>>252>>258>>260は同一人物

262 :デフォルトの名無しさん:2014/11/03(月) 21:17:41.50 ID:jdGUjlHm
ということは>>251>>261は同一人物か

263 :デフォルトの名無しさん:2014/11/03(月) 21:32:47.76 ID:2URJ2yqY
>>261
うわ、精神病!!
レスするな気持ち悪い

264 :デフォルトの名無しさん:2014/11/09(日) 10:58:11.34 ID:mRPDV88W
計算メインの時ってどうしてる?S式だと見通し悪いだろ?
中置マクロとかなのかな。

265 :デフォルトの名無しさん:2014/11/09(日) 11:46:13.25 ID:/Un9rwFK
見通し悪いと思わない。 それが真の Lisper

266 :デフォルトの名無しさん:2014/11/09(日) 12:24:27.88 ID:mRPDV88W
マジか。Lisperになりたいけど難しそうだな。

267 :デフォルトの名無しさん:2014/11/09(日) 13:21:43.06 ID:26PwmB10
見通し悪いという意見も結構あるよ
でも中置マクロ定義すれば解決する問題でも無いみたい

268 :デフォルトの名無しさん:2014/11/09(日) 14:02:59.43 ID:9LyR+5oz
逆ポーランド記法が一番

269 :デフォルトの名無しさん:2014/11/09(日) 14:11:50.34 ID:g+QB36mR
見通し悪いって具体的にどういう式がさ?

270 :デフォルトの名無しさん:2014/11/09(日) 14:19:51.75 ID:iOs0WUR2
(define (f x)
(+ (* 3 (expt x 2)) (* 2 x) 1))

271 :デフォルトの名無しさん:2014/11/09(日) 14:39:57.06 ID:g+QB36mR
def f(x) :
3 * expt(x, 2) + 2 * x + 1

やっぱり中置記法必要なんじゃないかな(うらぎり)
インデント揃えたらもっと見やすいでしょとも思うが

272 :デフォルトの名無しさん:2014/11/09(日) 14:42:59.95 ID:ONxWLUFR
あんまり気になったことがないけどなぁ

273 :デフォルトの名無しさん:2014/11/09(日) 14:47:38.30 ID:26PwmB10
(define (f x)
(+ (* 3 (expt x 2))
(* 2 x)
1))

これならなんとか

def f(x):
return ((x**2)*3)+(x*2+1)

やっぱり数式は余計な空白が邪魔になる

274 :デフォルトの名無しさん:2014/11/09(日) 15:32:31.42 ID:ynWG2Vzt
>>264
見通しが悪いと感じる理由は、小学生のときから中置だったから
逆に、普通の式は、優先順位が複雑なときに見通しが悪くなる

なので、普段からS式で計算を行なえば問題ない
問題ない

275 :デフォルトの名無しさん:2014/11/09(日) 15:35:43.56 ID:5LKfT6rZ
emacsを電卓代わりに使ってると、S式で書き始めるんだけど、
途中いつの間にか中置になっててあれ?となる事がわりとある。

276 :デフォルトの名無しさん:2014/11/09(日) 18:28:34.72 ID:mRPDV88W
>>274
何で2回言ったし。最小二乗とか実際書いてみると不満になるときあってさ。

277 :デフォルトの名無しさん:2014/11/09(日) 21:07:21.19 ID:LY/WWL8I
むしろ電卓でも逆ポーランド記法。

278 :デフォルトの名無しさん:2014/11/09(日) 21:46:35.44 ID:j/h8RDYC
負号が式中に出てくるとイラっとするかな

(+ n (f x) (g x) (- x))

279 :デフォルトの名無しさん:2014/11/09(日) 21:50:39.01 ID:9hZNEKSJ
こういうときは便利
(* a b c d)

280 :デフォルトの名無しさん:2014/11/09(日) 22:35:02.65 ID:j/h8RDYC
>>279
電卓代わりに使うときはそれ便利だよね。
でも、不定個数引数に適用したい場合はapplyでなくreduceを使わざるを得ないし、
最適化まで含めて考えると

(declaim (ftype (function (integer integer) integer) integer-binary-add))
(defun integer-binary-add (x y)
(declare (type integer x y) (optimize (safety 0) (speed 0) (debug 0)))
(the integer (+ x y)) )

みたいなのを型別に用意しなきゃ色々気持ち悪いので、既存の+, *みたいなのとは別に
自動coerceありの2項演算子と自動coerceなしの2項演算子を網羅的に規格で用意してほしいな、とは思う。
で、fixnum用の2項演算子の結果が溢れたらどうする?とかもoptimizeのsafetyとかで間接的に調整じゃなくて、
規格で明確化してほしい。

で、その場合、+, * は自動coerceありの2項演算子の方が良いと思うんだ。‘

281 :デフォルトの名無しさん:2014/11/10(月) 10:58:58.66 ID:7fhrA1DH
>>280
最適化というのは処理系に特化するということで,規格で縛るのは矛盾してると思うけど.
それと上で書いてる程度のことは処理系のコード読めばわかるがコンパイラがやってるので人が直に書く必要はないと思う.
applyも同様だけど渡す引数の数による.処理系依存だが条件を満す処理系を使えば良いだけで規格で横並びにする必要性は感じないな.

282 :デフォルトの名無しさん:2014/11/10(月) 13:08:19.02 ID:3Ls0kjjJ
そういう「処理系のソース読まなきゃわからない」のは馬鹿馬鹿しいの。
アプリケーションプログラマなら特定の処理系上で動作させることを想定してもいいけど
ライブラリプログラマとしては処理系非依存で書けるところは処理系非依存で書きたい。
そういうときの武器が規格なんだよ。

283 :デフォルトの名無しさん:2014/11/10(月) 14:42:50.82 ID:A6S7EPPR
処理系非依存で書きたいなんて当たり前のことでそ
最適化部分を規格として含むことが妥当かどうかの話してるんじゃないの

284 :デフォルトの名無しさん:2014/11/10(月) 17:59:57.39 ID:3Ls0kjjJ
それはものによるな。
どういうふうに最適化されるべきか、という話であれば規格はあまり関係ない。
しいて言えばCLにTCO義務化が入っていなかったのが残念ということくらい。

が、挙動そのものが最適化パラメータ次第で変わることがあり、それが処理系依存ってのはおかしいと思う。
fixnum同士の計算が最適化のパラメータ次第で変わることがある、なんてのは
そもそも最適化の文脈で語られるべきことじゃないと思うんだ。
だから、そういう部分は規格で明確化してほしいという話。

285 :デフォルトの名無しさん:2014/11/10(月) 20:45:33.08 ID:bjNSxWB8
何十年も前の規格なのになあ
なんでそのとき参加しなかったの

286 :デフォルトの名無しさん:2014/11/10(月) 22:35:30.72 ID:7cnYJA4z
というか、

 嫌 な ら 作 り 直 し て い い の よ

287 :デフォルトの名無しさん:2014/11/10(月) 22:55:40.61 ID:vdziLrfh
未定義であると明確に規格化されたらどうよ。

288 :デフォルトの名無しさん:2014/11/11(火) 04:03:45.78 ID:dhUGr2aJ
チンコいじりながら読んてます

289 :デフォルトの名無しさん:2014/11/11(火) 11:02:53.06 ID:rt/qfZQZ
下品なのはやめろ

290 :デフォルトの名無しさん:2014/11/11(火) 14:56:34.22 ID:dhUGr2aJ
マンコ舐めながら書いてます

291 :デフォルトの名無しさん:2014/11/11(火) 21:24:04.85 ID:OI8CRG+B
今更だけどtaolispが気になってる

292 :デフォルトの名無しさん:2014/11/11(火) 22:07:46.40 ID:rt/qfZQZ
そうか。

293 :デフォルトの名無しさん:2014/11/13(木) 22:51:05.42 ID:Ldx/LKXq
(define make-counter
(let ((count 0))
(lambda () (set! count (+ count 1)) count))

という手続きで、
(make-counter)を実行するたびに数がカウント出来るのはなぜでしょう?毎回letが評価されてcountは0にならないのでしょうか。

294 :デフォルトの名無しさん:2014/11/13(木) 23:01:36.59 ID:LPqs6Iq8
letは無名関数の適用の構文糖衣なんだよ
(let((count 0))〜) = ((lambda(count)〜) 0)
わかるね?

295 :デフォルトの名無しさん:2014/11/13(木) 23:03:56.54 ID:M0T6H6l+
変数は箱だというが,letで作られる変数はletが実行されるたび新しく作られて,
countという名前のラベルが貼られる.letから外れるとcountというラベルは剥がされ,
別の箱に再利用されるが,箱は使ってる限り奪われない.
箱が復数作られ,それぞれ勝手に中身を入れ替えることも起こる.

有限スコープ無限エクステントの理解ってそういうことでいいんだよな?

296 :デフォルトの名無しさん:2014/11/13(木) 23:24:36.50 ID:7ZjHj42h
その define で make-counter として定義されるのは、

(let ((count 0)) (lambda () (set! count (+ count 1)) count)) という式を
評価した結果の値だ、って所まではOK?

んで、その let 式の評価は、その define の時の 1 回だけしか起きない...
ということがわかってないようだから、OKでもなさそうだがとにかく次へ行く。

count に 0 を束縛した状態で、
(lambda () (set! count (+ count 1)) count) を評価したものが make-counter になるわけだけど、
その lambda を評価すると「count を束縛した状態」というものを抱え込んだもの(閉包)に
なって、それを毎回実行するので、カウントが増えていくわけ。

297 :デフォルトの名無しさん:2014/11/13(木) 23:41:29.45 ID:sU4LwNdC
let 式の評価は、その define の時の 1 回だけしか起きない... ってのはlisp全部の仕様でしょうか
いまさらながら、ちょっと怖い

298 :デフォルトの名無しさん:2014/11/14(金) 00:00:58.17 ID:O6F2cfME
sicp読もう(ゲス顔)
と言いたいところだけど、まあクロージャ、環境モデルなどの語句でググれば大体わかる

そのコードで肝なのはletで包んだlambdaである点ね
lambdaってのは外側の環境を含んだ関数を返すの
この環境というのは大雑把にいえば、レキシカルスコープ上でどんな変数が参照できてどういう束縛なのかの情報みたいなものね
だから(make-counter)を評価したらletで作られた環境付きの関数が返ってくる

(define make-counter2 (lambda () (let ((count 0)) (set! count (+ count 1)) count)))として

(define counter1 (make-counter))
(define counter2 (make-counter2))

としてcounter1とcounter2の挙動を比較してみたり、二つの環境モデルを実際に図で書いてみたりすると理解できる、かも

299 :デフォルトの名無しさん:2014/11/14(金) 00:01:35.95 ID:vIy4QCcC
他の言語でもそうだよ

300 :293:2014/11/14(金) 00:05:20.05 ID:kOXdBNfv
let(v e)が(lambda(v) (...) e)だというのは知識としては知っているのですが、それがletが1回しか評価されないというのがどう関係するのかよく分からないです

>>296
>んで、その let 式の評価は、その define の時の 1 回だけしか起きない...
ということがわかってないようだから、OKでもなさそうだがとにかく次へ行く。

そうですそこが分からないです・・・

301 :デフォルトの名無しさん:2014/11/14(金) 00:07:53.68 ID:bBfVN72A
(define (make-counter)
(let ((count 0))
(lambda () (set! count (+ count 1)) count))

こうでもしないと思ってるような動きはしないような...

302 :デフォルトの名無しさん:2014/11/14(金) 00:10:49.42 ID:OZzSNTvY
あ、いつもCommon Lispばっか書くから間違えてた
(define make-counter2 (lambda () (let ((count 0)) (set! count (+ count 1)) count)))

で、
(make-counter)
(make-counter2)

の挙動を比較してみたらってことですね、ごめん

303 :デフォルトの名無しさん:2014/11/14(金) 00:19:19.42 ID:qCbHalO3
ということは、関数の中のlet式の変数の参照はガーベッジコレクトされないってことか…

304 :デフォルトの名無しさん:2014/11/14(金) 00:30:09.41 ID:bBfVN72A
letの中で定義された関数はずっと定義された時のままletの中にいるんだよ

305 :デフォルトの名無しさん:2014/11/14(金) 00:30:14.36 ID:OZzSNTvY
>>298の表現も間違ってるな
> (make-counter)を評価したら

> make-counterはletで作られた環境付きの関数に束縛されてる
と読み替えてね

>>303
まともな処理系ならクロージャ自身の束縛がなくなった時点でまとめてGCされると思う

306 :デフォルトの名無しさん:2014/11/14(金) 00:44:44.18 ID:0NdzO4Gj
Schemeでしょ。順番に説明するから。

まず、
(define (f x y) (+ x y)) みたいな記法は簡便だから多用されるけど、実は、
(define f (lambda (x y) (+ x y))) の略記法だという点に注意。

で、
(define ver expr) みたいに書くと、exprを評価した値をverの値にする、と。

上のような普通の関数定義は、下の略してない記法を見れば分かるけど、
一番上に剥き出しで lambda があるわけだ。

んで、近代以降のLisp(Common LispとかScheme)は、lambda を評価すると、
手続きだけじゃなくて、その時の環境(変数名→値、という束縛の集まり)も
抱え込んだ「閉包」というものになる。

つまり、letの中にあるlambdaは、そのletによる束縛ごと、手続きになるわけ。
(let over lambdaというそのものズバリのタイトルの本があるが、まだ今読むのは
難しすぎると思う)。

(define foo (let ((x 0)) (cons (lambda () (set! x (+ x 1)) x)
  (lambda () (set! x (- x 1)) x) )))
foo
gosh> (car foo)
#<closure foo>
gosh> (cdr foo)
#<closure foo>
これで
((car foo)) とか ((cdr foo)) とかを評価して観察してみる

307 :デフォルトの名無しさん:2014/11/14(金) 01:57:56.37 ID:vIy4QCcC
処理が走るタイミングがわからないなら
カウンター関数とかじゃなくてdisplayとかもっと初心者にわかりやすいやつ使ったらいいのに

308 :デフォルトの名無しさん:2014/11/14(金) 07:22:19.77 ID:anfjtx4T
(define robot
 (let ((s 'jiro))
  (lambda (c)
   (cond ((eq? c 'fight) (set! s 'kikaider))
      ((eq? c 'normal) (set! s 'jiro))
      ((eq? c 'state) (display s))))))

309 :デフォルトの名無しさん:2014/11/14(金) 07:38:43.01 ID:anfjtx4T
(define robot
((lambda(s)
(lambda (c)
(cond ((eq? c 'fight) (set! s 'kikaider))
((eq? c 'normal) (set! s 'jiro))
((eq? c 'state) (display s)))))
'jiro))

これと等価で、最初のlambdaがsをもつ環境を作り、2番目のlambdaはクロージャとして
その環境を保持している。

310 :デフォルトの名無しさん:2014/11/14(金) 13:14:24.84 ID:XSSheCrx
クロージャの「環境を保持する」とはそういうことだったんですね
皆さんありがとうございます、なんとなく使い方が分かりました

311 :デフォルトの名無しさん:2014/11/14(金) 17:31:14.47 ID:i/qlCtxO
(make-counter)、lisp(sbcl)で書いてみたんだが、こんなんでええの?

(setf (symbol-function 'counter)
(let ((count 0))
(lambda () (incf count))))

sbcl には fset が無いみたいなのでマクロ?を使ってみたのがこれ↓

(defmacro fset (sym clj)
`(setf (symbol-function ',sym) ,clj))

(fset counter
(let ((count 0))
(lambda () (incf count))))

lisp は初めてなんで、よーワカらん…

312 :デフォルトの名無しさん:2014/11/14(金) 17:40:26.28 ID:4+06Yvxk
counterの定義はdefun使えばいいのに
(defun counter () (let ((count 0)) (lambda () (incf count))))
counterが返すクロージャをfset使うのは便利だけど
(fset 'f (counter))
(f) => 1
(f) => 2

313 :デフォルトの名無しさん:2014/11/14(金) 18:10:22.59 ID:1eTt6dGM
defunをどう読む?
デフン?

314 :デフォルトの名無しさん:2014/11/14(金) 18:14:51.39 ID:0NdzO4Gj
デファン

315 :デフォルトの名無しさん:2014/11/14(金) 18:29:55.52 ID:i/qlCtxO
>>312
なるほど、どうもありがとう
ところでカウンタの値をリセットしたり、インクリメントさせずに
クロージャ内部のcountの値を取ってくるにはどうしたらいいだろう?

(f) => 2
(reset-counter 'f)
(f) => 1

(f) => 2
(get-count 'f) => 2
(f) => 3

316 :デフォルトの名無しさん:2014/11/14(金) 18:44:20.31 ID:OZzSNTvY
一例としては、メッセージパッシング

(defun counter ()
(let ((c 0))
(lambda (&optional message)
(ecase message
((nil) (incf c))
(:reset (setf c 0))
(:get c)))))

(setf (symbol-function 'f) (counter))

(f)
(f :reset)
(f :get)

317 :デフォルトの名無しさん:2014/11/14(金) 18:48:27.10 ID:i/qlCtxO
>>316
d、素晴らしい

318 :デフォルトの名無しさん:2014/11/14(金) 19:11:34.02 ID:4+06Yvxk
let over lambdaのパンドリックマクロも面白いよ

319 :デフォルトの名無しさん:2014/11/14(金) 20:43:27.88 ID:2IEK62nJ
Mパッシングの発想は嫌いでもないんだけど
処理系でジャンプテーブルに変換でもしてくれないと遅くて使ってられん

320 :デフォルトの名無しさん:2014/11/14(金) 21:03:06.69 ID:GjdWj6fq
変換されないの?

321 :デフォルトの名無しさん:2014/11/15(土) 01:29:50.18 ID:Y7mCZzKU
どっちが好き?
(define 1mycons (lambda (a d)
(lambda (mes) (case mes
((car) a)
((cdr) d)
((scar) (lambda (v) (set! a v)))
((scdr) (lambda (v) (set! d v)))
((type) 'pair)))))
(define 1mycar (lambda (rec) (rec 'car)))
(define 1mycdr (lambda (rec) (rec 'cdr)))
(define 1myset-car! (lambda (rec arg) ((rec 'scar) arg)))
(define 1myset-cdr! (lambda (rec arg) ((rec 'scdr) arg)))
(define 1mypair? (lambda (rec) (eq? (rec 'type) 'pair)))

(define 2mycons (lambda (a d)
(lambda (mes)
(mes a d (lambda (v) (set! a v)) (lambda (v) (set! d v)) 'pair))))
(define 2mycar (lambda (rec) (rec (lambda (ar dr aw dw ty) ar))))
(define 2mycdr (lambda (rec) (rec (lambda (ar dr aw dw ty) dr))))
(define 2myset-car! (lambda (rec v) (rec (lambda (ar dr aw ty) (aw v)))))
(define 2myset-cdr! (lambda (rec v) (rec (lambda (ar dr aw ty) (dw v)))))
(define 2mypair? (lambda (rec) (rec (lambda (ar dr aw dw ty) (eq? ty 'pair)))))

322 :デフォルトの名無しさん:2014/11/15(土) 08:25:59.63 ID:mZUmkatx
Lisperの人が普段何書いてるのか興味ある。スクリプト用途には向かないよね?

323 :デフォルトの名無しさん:2014/11/15(土) 09:15:57.16 ID:mqciZrYA
俺はスクリプトにも使ってる。
replでボトムアップスタイルが楽。

324 :デフォルトの名無しさん:2014/11/15(土) 09:31:44.54 ID:mqciZrYA
対話環境は他の言語にもあるけど、文法部分で一工夫必要になったり、上から下への手続き的コードになりがちで、
いまいち部品の部品から育ててる感触にならない。

325 :デフォルトの名無しさん:2014/11/15(土) 10:59:17.47 ID:Jt7ZjAVW
Lispはまだ問題がまだよく定義できていない、あるいは、解法の定番がないものについて
試行錯誤しながら整理することに利用している。REPLによる対話環境はその点で便利。

326 :デフォルトの名無しさん:2014/11/15(土) 12:09:22.79 ID:opC/w3mn
普通にスクリプト書くなあ、向いてないとも思わんし

327 :デフォルトの名無しさん:2014/11/15(土) 13:11:31.14 ID:E69iLJ1U
lispといってもgaucheは向いてるけどsbclとかはイマイチ
一応出来るんだけどなんかしっくりこない

328 :デフォルトの名無しさん:2014/11/15(土) 14:46:12.46 ID:HZ2lm6V2
スクリプトにはElispじゃね?

329 :デフォルトの名無しさん:2014/11/15(土) 16:39:04.18 ID:go3L+9fV
起動が遅いけど自分はclojureよく使うな>>スクリプト
事前準備がjvmとleinスクリプトだけで済むからどこでもたいてい使える。
出先の会社でインストール厳しいところでもjvmまではアリだったりするから。jarベースで起動できるスクリプトまでは通るし、clojure込みでjarに固めてあればrepl起動していろいろできるから。
インストール厳しいところでexe申請だともうどうもならん様なところとかでもなんとかなる。

330 :デフォルトの名無しさん:2014/11/15(土) 16:41:53.57 ID:2sYNTMQS
シェルスクリプトでいいんじゃないかな

331 :デフォルトの名無しさん:2014/11/15(土) 17:03:25.75 ID:go3L+9fV
>>330
自分が一番つらかったのはpowershell無しのwindows環境ですcmdはきつい
unix系OSを開発に使ってるところだとjvm無しはなかったです。

なおエディタがnotepad.exeだけってところもありましたよ(二度と仕事したくない)

332 :デフォルトの名無しさん:2014/11/15(土) 17:04:41.60 ID:go3L+9fV
あ、windows以前だとedlinだけってところありました、財閥系の会社だから名前出さないけど

333 :デフォルトの名無しさん:2014/11/15(土) 17:20:04.70 ID:2sYNTMQS
Javaの場合、単純ソートでも Comparator のサブクラスを実装しなきゃ
いけないトコが面倒臭かったなぁ…まぁ、Java 8 で lambda 式がやっと
入ったんで sort に限らず色々と楽になったからいいけど

334 :デフォルトの名無しさん:2014/11/15(土) 18:06:27.96 ID:De01Q5YA
>>325
昔はそう思ってたけど、もっと広く自分が仕様を固められてないぐらいから使える
内側のS式を常に動かて、試行錯誤しつつ、仕様が徐々に固まっていく方法が取れる
頭だけで事前に計画するより、ずっと早く適切に書ける
グレアムが画家のキャンバスや思考の道具発言の意味がやっと理解できた
考えてから書くのでなく、考える時にいじりまわしてる道具
高い表現力も、余計な事を分離して、思考の邪魔にならないように

335 :デフォルトの名無しさん:2014/11/15(土) 18:09:18.29 ID:VFt6Efys
仕様を固めちゃったら、大学の演習で「lisp作れ」が出来なくなっちゃう

336 :デフォルトの名無しさん:2014/11/19(水) 06:22:24.13 ID:BdNjB3zo
へ?

337 :デフォルトの名無しさん:2014/11/21(金) 12:05:52.96 ID:25M9iUJl
俺Guile

338 :デフォルトの名無しさん:2014/11/21(金) 12:33:32.38 ID:OCrSR/1K
>>337
日本限定駄洒落系処理系作りたくなるからやめれwwww

339 :デフォルトの名無しさん:2014/11/21(金) 21:46:16.13 ID:8nypL9of
お前ザンキエフ

340 :デフォルトの名無しさん:2014/11/22(土) 01:43:19.59 ID:Lcg9HbgI
cl-glfw3をmacで動かしたことある人いますか?
サンプルを動かしてみてもフリーズしてしまいます
試しに他言語からGLFW3を叩いたところ問題なく動いたのでcl-glfw3固有の問題だと思うのですが

341 :デフォルトの名無しさん:2014/11/23(日) 01:23:43.92 ID:QSlTVfZV
家のmac (10.9.5)、 sbcl 1.2.5 で試してみた。
まずうちでは macports を使ってるのでライブラリをsudo port install glfw として入れた。
sbclを起動して (ql:quickload 'cl-glfw3) とやったら、
ライブラリが認識されずにデバッガが起動したので、
USE-VALUE → ("/opt/local/lib/libglfw.dylib") としてやった。
で(ql:quickload 'cl-glfw3-examples) して
(cl-glfw3-examples:basic-window-example) と
(cl-glfw3-examples:events-example) を試してみた。どちらも動いているように見える。

多分、ccl を使ってるんじゃなかろうか。うちの環境でも ccl だとフリーズした。
確か opengl系の他のライブラリとか、あと lispbuilder-sdl というライブラリでも似たような問題があったはず。
ccl が中で使ってる Cocoa のスレッド安全性の問題がどうとかでうまく動かないらしい。

なんとか ccl を使いたい場合は lispbuilder-sdl の本家
https://code.google.com/p/lispbuilder/wiki/DownloadInstallationIntro
にもちょっと書いてあるように、 ccl の single-threaded-build を使う必要がある。
これは quicklisp にもある single-threaded-ccl というパッケージで作れるが、
もしIDEにslimeを使ってるなら相性が良くないのでおすすめしない(sbclを使えば良いと思う)。

342 :デフォルトの名無しさん:2014/11/23(日) 01:25:25.79 ID:QSlTVfZV
あ、hを抜くのを忘れてしまった…

343 :デフォルトの名無しさん:2014/11/23(日) 02:47:53.06 ID:RSaXyLxZ
書き忘れていましたがお察しの通りcclを使っていました
sbclを入れて使ってみたところ上手く動いてそうだったのでこっちで試してみようと思います
ありがとうございました

344 :デフォルトの名無しさん:2014/11/24(月) 03:40:40.57 ID:CJEO4y38
Liserはこの世のゴミ

345 :デフォルトの名無しさん:2014/11/24(月) 07:44:21.42 ID:8Acoy1KJ
>>344
「この世のゴミ」というのはあまりにも失礼だろう。
浮世離れした人たちなのは確かだろうけど

346 :デフォルトの名無しさん:2014/11/24(月) 07:54:36.54 ID:sEfL4Txj
いや、liserの奴らはヤバイ
おれはlisperだから関係ないけど

347 :デフォルトの名無しさん:2014/11/24(月) 10:14:12.30 ID:rMClEZSF
>>344
エヘヘ

348 :デフォルトの名無しさん:2014/11/24(月) 10:14:59.63 ID:rMClEZSF
リサちゃあァァん!
カワイィよおゥ!

エヘヘ

349 :デフォルトの名無しさん:2014/11/24(月) 13:22:39.10 ID:4Y/TQv8X
この世にGCが無くてよかった

350 :デフォルトの名無しさん:2014/11/24(月) 14:22:18.12 ID:eZk/JDId
もしあってもオブジェクトからしたら気付かないだろ

351 :デフォルトの名無しさん:2014/11/24(月) 14:37:09.17 ID:/I9QN6kR
孤独死とかGCなんじゃね

352 :デフォルトの名無しさん:2014/11/24(月) 14:41:05.02 ID:eZk/JDId
でもそれを見つけたら参照されてることになるんじゃね

353 :デフォルトの名無しさん:2014/11/24(月) 14:42:39.72 ID:eZk/JDId
もしどこからも参照されなくなってGCされるなら
死じゃなくて存在自体消されてるはず

354 :デフォルトの名無しさん:2014/11/24(月) 14:45:24.73 ID:/I9QN6kR
参照されてないのを処理系が発見して回収して遺品とか処分したり部屋とかリサイクルしたり。

355 :デフォルトの名無しさん:2014/11/24(月) 14:46:47.35 ID:eZk/JDId
発見するのは人で処理系じゃないからな

356 :デフォルトの名無しさん:2014/11/24(月) 16:57:43.95 ID:ScNxOBXo
おにぎりたべたい…

357 :デフォルトの名無しさん:2014/11/24(月) 18:02:36.80 ID:3cGvLtNK
>>356
発見現場で?

358 :デフォルトの名無しさん:2014/11/24(月) 18:23:45.73 ID:Gqcq9WvC
ああ、知らないのか

餓死した人の言葉だよ、それ

359 :デフォルトの名無しさん:2014/11/24(月) 18:46:04.12 ID:/I9QN6kR
おじぎり、ひとつだけちょうだい…

360 :デフォルトの名無しさん:2014/11/24(月) 22:34:47.65 ID:HlxVQOol
おにぎりの人?

361 :デフォルトの名無しさん:2014/11/24(月) 22:35:50.30 ID:n8voiuRi
日記に書くほどおにぎり食べたかった人

362 :デフォルトの名無しさん:2014/11/24(月) 23:07:20.31 ID:sHaIAKeh
参照されてないおにぎりうめぇ

363 :デフォルトの名無しさん:2014/11/24(月) 23:20:23.49 ID:94LY/waD
「なに勝手に部屋ん中片付けてんだよ!!」
「あんたがいつまでも弱参照にしてるからでしょうが!」

364 :デフォルトの名無しさん:2014/11/25(火) 00:10:16.04 ID:Y2tVIh8o
不法入国の癖に参照されまくりの某国人「歴史的経緯ガー」

365 :デフォルトの名無しさん:2014/11/25(火) 00:15:07.85 ID:A7BBHD38
巣に帰れ

366 :デフォルトの名無しさん:2014/11/25(火) 00:18:44.93 ID:Y2tVIh8o
コンスコンスとか言ってると思ったらやっぱり居るのか。
このスレは監視対象だな。

367 :デフォルトの名無しさん:2014/11/25(火) 02:56:18.48 ID:xG1c8sBU
キチガイが湧いてんね

368 :デフォルトの名無しさん:2014/11/25(火) 08:00:49.45 ID:D/zVPXED
毛根がGCされる

369 :デフォルトの名無しさん:2014/11/25(火) 08:43:14.42 ID:Y2kTihH9
弱参照のビオレ

370 :デフォルトの名無しさん:2014/11/26(水) 22:37:30.40 ID:E9zco5kU
>>364
そもそも彼らが不法入国した日本列島はアメリカだしな…

371 :デフォルトの名無しさん:2014/11/27(木) 03:31:02.92 ID:ul68CLMk
>>369
メモリに優しいですー

372 :デフォルトの名無しさん:2014/11/28(金) 04:06:38.16 ID:X9B4zpDK
Lisperはこの世のゴミ

373 :デフォルトの名無しさん:2014/11/28(金) 05:04:56.14 ID:sI7uQd7I
どんどん回収しちゃおうね

374 :デフォルトの名無しさん:2014/11/28(金) 05:49:38.19 ID:mpzFKch7
GCしちゃうおじさん

375 :デフォルトの名無しさん:2014/11/28(金) 07:58:20.26 ID:zPjqkHsA
どんどんGCされちゃうんだ…

376 :デフォルトの名無しさん:2014/11/28(金) 08:53:53.47 ID:FEzYCeOn
過去の栄光にしがみつくだけならGCされてもしかたないかもな

377 :デフォルトの名無しさん:2014/11/28(金) 10:11:39.79 ID:9LmqPqsR
Lisp嫌いそうな奴はにおいでわかる

378 : ◆QZaw55cn4c :2014/11/28(金) 23:23:56.94 ID:4rJrrl2j
>>377
本当か?じゃ、俺はどうだ?

379 :デフォルトの名無しさん:2014/11/28(金) 23:46:56.99 ID:SjP4KMTN
    ぅぉぇっぷ
  /⌒ヽフ
  /  rノ
 OO_)


***ゔぉぉぉぉぉえ!!
ゲロゲロゲェ――!!!!
 ̄ ̄ ̄ ̄∨ ̄ ̄ ̄ ̄ ̄
     ぅぉぇっぷ
  /⌒ヽフ
  /  rノ
 OO_);゚。o;,


    ぅ゙ぉぇぇぇ
  ∧_∧
〃 (|i´r`)
 / つ ィ;゚;δ゚,
⊂こ_)_);:゚。o;:゚。
    ,;;。:;゚。o,
ビチョビチョ

380 :デフォルトの名無しさん:2014/11/29(土) 02:27:59.22 ID:xkdYAp4d
aaかわいい

381 :デフォルトの名無しさん:2014/11/29(土) 14:37:08.46 ID:+LKz1QlS
lighttableいいなぁ
なんでCL仲間はずれにするのん?

382 :デフォルトの名無しさん:2014/11/30(日) 20:01:28.37 ID:tVFfE2xZ
lispを低水準なものにコンパイルする処理系作ってみたいんだけど
変換後のコードをCにするかllvmにするか迷ってるんだけどなにか大きな違いある?
主に学習目的で

383 :デフォルトの名無しさん:2014/11/30(日) 20:22:19.78 ID:4ibMOZ4y
>>382
Cにすると変換系を作り手や関係者が視認しやすいけど
LLVMまで落としちゃうと関われる人が減るってだけな感じ。

作者がLLVMでも問題無いって感じるならCにする意味無いはず。

384 :デフォルトの名無しさん:2014/11/30(日) 20:37:08.21 ID:9j00GH/d
まあ、 C の方が移植性が高い可能性はあるな。
LLVM がサポートしてないアーキテクチャへの移植が楽ということは有り得るかも。

385 :デフォルトの名無しさん:2014/11/30(日) 21:17:52.80 ID:MoGBaFHc
>>382
いまなら断然llvmだと思う。
前に数理システムの人がレポート書いてたけど、今時のlispでも共通部分式の除去すらやってない。早いlisp書いてくれ。

386 :デフォルトの名無しさん:2014/11/30(日) 21:24:05.28 ID:roSgavVB
意見が分かれてて余計に悩むわ
とりあえずGC本消化してドラゴンブック舐めてから考える

387 :デフォルトの名無しさん:2014/11/30(日) 23:13:32.37 ID:8lFnY/7Z
>>385
仮に最新のコンパイラ技術が投入できたとしてナンボほど速くなるのかだが,
劇的に速くなるようには思えない .
具体的にどれだけ速くなるのよ.

388 :デフォルトの名無しさん:2014/12/01(月) 10:31:46.65 ID:oEpuqve5
取り合えず数理システムの人が、「こう書いたら、コンパイラはここまで最適化すべき」
ということを書いてるので、それ読んでみればだいたい見積もれる。

389 :デフォルトの名無しさん:2014/12/01(月) 17:58:29.60 ID:+y+TG/gN
数理システムのレポートってこれのこと?
cl-www.msi.co.jp/solutions/knowledge/lisp-world/tutorial/compiler-eval.pdf

390 :デフォルトの名無しさん:2014/12/01(月) 18:04:24.08 ID:+y+TG/gN
もしかしてcかllvmで悩んでたのはリターゲッタブルコンパイラを作ることで
どっちにするか決めるのを先送りに出来るのか

391 :デフォルトの名無しさん:2014/12/01(月) 23:09:01.28 ID:PTMqD4FO
そもそもlispが低水準だと思ってた俺は異端か…

392 :デフォルトの名無しさん:2014/12/01(月) 23:27:45.20 ID:VqGzYVuf
気楽に書いてもC並みに早いのが希望だなぁ。

393 :デフォルトの名無しさん:2014/12/01(月) 23:38:35.23 ID:GZ6n/7wy
REPL があるとグローバルな最適化があまり出来ないだろ。
Lisp 的な開発手順とのトレードオフがある話なんだよな。

394 :デフォルトの名無しさん:2014/12/01(月) 23:52:14.95 ID:TRt33dR6
JavaのJITみたいに最適化の前提が破られた時点でdeoptimizeするとかだめなの?

395 :デフォルトの名無しさん:2014/12/02(火) 00:22:18.96 ID:ElFoAaYo
駄目かどうかで言えばダメじゃない。
ただ、そのためのコストと最適化の効果を天秤にかけたとき割に合うのがどこかっていうのは繊細な微調整が必要だし状況によるので、
かなりややこしくなると思う。

396 :デフォルトの名無しさん:2014/12/02(火) 10:52:41.62 ID:3rM6YAIj
別にStalinみたいに最適化してもいいのだし

397 :デフォルトの名無しさん:2014/12/02(火) 16:25:16.25 ID:aOEO6EKE
stalinの最適化ってどうなってんの?

398 :デフォルトの名無しさん:2014/12/02(火) 22:51:01.08 ID:TkyJwIyD
粛清、かな……つまりはベクトル化

399 :デフォルトの名無しさん:2014/12/03(水) 22:30:04.41 ID:Xk8uL6pL
schemeの場合ルート環境を巨大letrecと解釈してコンパイルしてもうまくなかった思い出

400 :デフォルトの名無しさん:2014/12/04(木) 05:00:28.88 ID:0vTQY+f3
Lisp関連の書籍は
まず冒頭でLispへの深い愛が語られますが
世の中の多くのエンジニアは不細工なゲテモノとして扱いします
ウンチッチ!

401 :デフォルトの名無しさん:2014/12/04(木) 09:42:59.63 ID:K7LKSj08
緑の宇宙人として描いてる本まであるからな

402 :デフォルトの名無しさん:2014/12/04(木) 11:31:09.02 ID:so8xg5it
あの本は良いキチガイっぷりだった

403 :デフォルトの名無しさん:2014/12/04(木) 13:49:26.86 ID:uBagqB+X
>>402
でもあの本のCMビデオ結構すき

404 :デフォルトの名無しさん:2014/12/04(木) 16:26:08.82 ID:dr6t6O94
俺も立派なキチガイになれるように来春にはミドリの宇宙人にご挨拶する

405 :デフォルトの名無しさん:2014/12/04(木) 16:50:13.43 ID:uBagqB+X
久々に見てしまった
ttps://www.youtube.com/watch?v=HM1Zb3xmvMc

406 :デフォルトの名無しさん:2014/12/04(木) 17:22:27.06 ID:XPMz52lF
緑の宇宙人普通にかわいいんだよなぁ…

407 :デフォルトの名無しさん:2014/12/04(木) 20:39:21.67 ID:e632zg1P
いくら生物シリーズで統一しているとはいえ、あれはないよな‥笑ってしまった‥

408 :デフォルトの名無しさん:2014/12/05(金) 00:34:01.11 ID:7kEgHdgd
関数定義でfunction-name-1みたいな最後に-nを付けるような書き方見たことある気がするんだけど
あれどういう時に使うのか気になってモヤモヤしてる
知ってる人いない?

409 :デフォルトの名無しさん:2014/12/05(金) 03:02:29.21 ID:4BWzbqMH
別に特に決まりがあるわけじゃないけど。

まあ一般的にはなんかの下請け関数とかで名前が重要じゃないときとかにそんな風にするかね。

410 :デフォルトの名無しさん:2014/12/05(金) 16:21:50.47 ID:vcTK+gE2
prog1 や prog2 みたいな例もあるぞ。
そうやって事例を挙げることはできるけど、明確に共通する規則はないと思う。

411 :デフォルトの名無しさん:2014/12/05(金) 18:24:02.76 ID:Izx+IQ1I
>>407
オライリーは、毎回、表紙の生物の解説が裏の方に書いてあるけど、land of lisp には書いてなかった
オライリーは笑いが分かってない

412 :デフォルトの名無しさん:2014/12/05(金) 18:36:07.42 ID:fJq8ciEr
本文で解説されてるからじゃないか?

413 :デフォルトの名無しさん:2014/12/06(土) 00:26:42.16 ID:G2+yAQm/
-1
つまりマイナスいち
わかった?
※マジです

414 :デフォルトの名無しさん:2014/12/06(土) 00:28:32.34 ID:0yBjMk5x
>>413
マジで?
いまいち信じられないからソース欲しい

415 :デフォルトの名無しさん:2014/12/06(土) 07:08:35.06 ID:ZvJlqp/D
schemeはデータ記述方法とプログラム記述方法が同じで
継続もファーストクラスオブジェクトだと聞いて
「継続もシリアライズして渡せるのかすげーな」と思ってたおじさんです
よろしくお願いします

416 :デフォルトの名無しさん:2014/12/06(土) 08:17:58.92 ID:JL1pKjXv
なんですげえのかわからないけれど継続とやらを使うと末尾再帰表現できて遅くならないのは分かった初心者です。On Scheme
(collectorとして学んだけどcontinuationともいうと書いてあったな)

あれこれしたあとで、あれこれしてきたあとで、これをやれよ

という意味で継続なのかなあ

あれこれして集めまくってから、それから、こらやれろ

はコレクターだなぁ
両方共同じだな

417 :デフォルトの名無しさん:2014/12/06(土) 08:25:33.66 ID:58PXrMKa
すると
(define foo
(lambda l)
(if (null? l) '()
(cons (last l) (foo (butlast l))))))
のコンスも似たようなものにならないのか?

あれこれやってきてから(last l)にそれをコンスしろよ
コラコラ、キスするんじゃない

418 :デフォルトの名無しさん:2014/12/06(土) 09:03:08.92 ID:dXBvUp0m
ここはお前の日記帳じゃねえんだって言えばいいの

419 :デフォルトの名無しさん:2014/12/06(土) 09:16:39.79 ID:uQjdstnN
いや末尾再帰の最適化やらCPSやらと
自分が言ってる継続は別の話だからね
継続はcall/ccで取り出せるやつのことな

420 :デフォルトの名無しさん:2014/12/06(土) 09:33:20.71 ID:uQjdstnN
さまざまな言語の不自由さから来るストレスで
痛めつけられ心が弱っているコーダに
救いの手を差し延べるのがLispなのです
故に初学者は糖質そのものですが
lispほたくさんの))))))))で優しく包み込んでくれます

421 :デフォルトの名無しさん:2014/12/06(土) 12:14:51.26 ID:q7blqefO
糖衣構文がなんだって?

422 :デフォルトの名無しさん:2014/12/06(土) 13:23:28.05 ID:Th4LU2Jg
>>415
コンピュータの電源をブツ切りしたときに、継続がどうなってるのかモヤモヤする

423 :デフォルトの名無しさん:2014/12/06(土) 14:26:35.86 ID:1juExYmo
>>422
シリアライズできるのならそれは丸ごとシリアライズされるだろうから電源切っても平気だと思うyo!
読み出せば参照してる環境もレキシカル変数も手続きも中身全部芋づる式に復元されるはずda!
ファイルとかオープンしてたらどうなってるかはわからないけど

424 :デフォルトの名無しさん:2014/12/06(土) 15:42:06.52 ID:EShMBgwp
未だに Scheme レベル5 くらいから上へ行けねー。3imp のおかげで継続はわかってきたが。
日常的には他のスクリプトを使ってしまうんだよね

425 :デフォルトの名無しさん:2014/12/06(土) 16:31:13.94 ID:JL1pKjXv
>>424
そのレベルってどういう基準なの?

426 :デフォルトの名無しさん:2014/12/06(土) 16:44:50.48 ID:vYfcrRSe
>>425
私家版、Schemeプログラマのレベル10
じゃないの?
ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3ASchemeプログラマのレベル10

427 :デフォルトの名無しさん:2014/12/06(土) 16:55:55.20 ID:JL1pKjXv
>>426
サンクス

428 :デフォルトの名無しさん:2014/12/06(土) 17:01:30.87 ID:JL1pKjXv
俺はレベル1だな

429 :デフォルトの名無しさん:2014/12/07(日) 12:12:52.12 ID:mrRmmrII
俺はレベル0 ‥信者がいるらしいので‥

430 :デフォルトの名無しさん:2014/12/07(日) 13:37:40.12 ID:39n8CS1K
>>429
あまり難しく考えないで楽しんだらいいと思う。
信者はマクロや継続のことに拘るかもしれないが、とりあえず受け流しておいていいと思う。

431 :デフォルトの名無しさん:2014/12/08(月) 08:18:48.25 ID:G7gVbxe9
>>423
その継続を呼ぶと電源がブツ切りになるんじゃない?
ブツ切りされる原因は変わっても結局そうなる
世界線が収束してしまうんよ

432 :デフォルトの名無しさん:2014/12/09(火) 00:14:04.82 ID:EEaDhXxg
継続については便利な小道具くらいに思っておいた方がいい
http://cl-www.msi.co.jp/solutions/knowledge/lisp-world/articles/three-dogmas-of-scheme

433 :デフォルトの名無しさん:2014/12/09(火) 05:15:14.92 ID:W0TWIhoG
あるいは、頭はいいっぽいけど向いてなさそうな人を釣る餌

434 :デフォルトの名無しさん:2014/12/09(火) 05:35:59.40 ID:ODpqJ//P
>>432
これ書いた人は頭良くないだろ
可能的推論をそれでしかありえない必然として扱いすぎている

435 :デフォルトの名無しさん:2014/12/09(火) 06:21:50.81 ID:S/zCqKv6
論調なんかどうでもよいが再帰と繰り返しと束縛の話がおかしいのが気になるな

436 :デフォルトの名無しさん:2014/12/09(火) 06:37:23.35 ID:14o7WARY
フルの継続の問題って決局何が問題なのかよく分からない…。Haskell のIOモナドの説明に出てくるWorld変数と関係ありますか?

437 :デフォルトの名無しさん:2014/12/09(火) 07:42:22.21 ID:lF8Ec24S
>>435
君も頭悪そうだなあ
論調ととらえるか
あらあら

438 :デフォルトの名無しさん:2014/12/09(火) 12:17:02.34 ID:Gtt0rZVg
>>436
条件付きのcall/ccの方が実装は軽快になると思う。
しかし、多くのSchemerは反対するだろう。

439 :デフォルトの名無しさん:2014/12/09(火) 13:31:50.25 ID:UcifULow
call/ccの前に call-with-escape-continuationってなかったっけ?、r3rsだったかな

440 :デフォルトの名無しさん:2014/12/09(火) 19:06:46.32 ID:Gtt0rZVg
>>439
R3RSでも既に(call-with-current-continuation proc) essential procedure となってるね。

441 :デフォルトの名無しさん:2014/12/09(火) 19:52:03.83 ID:UcifULow
>>440
WinCEのschemeでcall/ec使ってる実装(call/cc無し)があってそれがr3rs準拠だった模様
もうだいぶ前の事なんでうろ覚えですまぬ

442 :デフォルトの名無しさん:2014/12/09(火) 22:03:53.75 ID:MlF9eZ3u
>>441
Racketには今でもcall/ecがあるんだね。驚いた。
そういう選択もあったと思うな。

443 :デフォルトの名無しさん:2014/12/18(木) 20:43:56.14 ID:3M2Q9ZpV
lisp処理系でマクロ展開をコンパイルの前段階の最適化やらの部分でするとき
マクロ展開にevalを使わないと実装できない気がするんだけどどうしたらいい?

(defmacro nil! (x) (list 'setq x nil))
というマクロがあって
(nil! foo)という式を展開するときに
(list 'setq foo nil)これは本当は
(setq foo nil)になってほしい

ここら変でおかしい事に気付いた

444 :デフォルトの名無しさん:2014/12/18(木) 21:33:44.60 ID:JhkKaZoW
どうしたらいいもなにも素直にevalしてください
マクロってのはそういうもんです

445 :デフォルトの名無しさん:2014/12/18(木) 22:44:07.59 ID:kYMKvlss
じゃあコンパイラを書く場合はevalと両方書かないと駄目なのか

446 :デフォルトの名無しさん:2014/12/18(木) 22:51:18.41 ID:DAuXzDKB
evalもなにも、nil!っていう(マクロ展開用の)関数にコード生成させて、それを(nil! ...)の現れた場所に埋め込むのがマクロ展開器の仕事でしょう

447 :デフォルトの名無しさん:2014/12/19(金) 00:29:28.98 ID:8jf/i4w+
>>443
ちょっとなにいってるかわかんない

448 :デフォルトの名無しさん:2014/12/19(金) 03:26:43.29 ID:upYjIo/Z
前処理としてチューリング完全な手続きが使えたらいろいろできるよね、てのが Lisp のマクロ。
で、そのマクロ用の言語として Lisp をそのまま流用するのが伝統的マクロのアプローチだけど、
一方で R5RS Scheme みたいにマクロ用の独自言語を用意するというアプローチもある。

>>445
別にマクロ手続きをコンパイルして実行してもいいのよ?

449 :デフォルトの名無しさん:2014/12/19(金) 04:04:17.00 ID:mNsxWZGv
read 時にも結局evalが必要なんだっけ

450 :デフォルトの名無しさん:2014/12/19(金) 12:56:51.95 ID:o138/K/4
>>448
やっぱり伝統的な方法でやるならevalかインタラクティブなコンパイル処理を用意しないとだめか
副作用の無い関数は展開したいからevalが妥当かな

451 :SCHEME餃子 ◆8X2XSCHEME :2014/12/19(金) 16:37:56.84 ID:Jd94yde9
R5RS のマクロはある種の独自言語なのは確かだけど、
低水準マクロにどういう方式を採用すべきかで合意できなかったから
不本意ながらとりあえず合意できる範囲でインターフェイスを決めたものであって、
あれが Scheme 的なアプローチってわけじゃないんだよ。

452 :デフォルトの名無しさん:2014/12/19(金) 17:06:34.01 ID:OgBatUX1
ありゃ仕方なくやったって感じだな
Cのプリプロセッサマクロの豪華版

453 :デフォルトの名無しさん:2014/12/19(金) 17:54:12.96 ID:bX2RZBOL
健全性は理念としてはわかるが、その実現のために
展開器がコンパイラ並みの大きさになっていくのはいかがなものか?
バグのない完全な展開器は現存するのか?

454 :デフォルトの名無しさん:2014/12/19(金) 19:51:32.57 ID:2wM4VZiR
R7RSにはmacroexpandが無い。
どうやってマクロをデバッグするんだ?

455 :デフォルトの名無しさん:2014/12/22(月) 19:02:05.87 ID:AjGfN6zS
http://practical-scheme.net/wiliki/wiliki.cgi?Gauche%3A%E5%BE%AA%E7%92%B0%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AE%E8%AA%AD%E3%81%BF%E6%9B%B8%E3%81%8D
にある
(#0=(a . b) . #0#)
は循環リストではないのでは?

456 :デフォルトの名無しさん:2014/12/22(月) 19:17:19.21 ID:kX1Hiu3z
そうですよ。

457 :デフォルトの名無しさん:2014/12/22(月) 19:20:13.28 ID:j5bAC/Q+
> 循環や共有構造を持つS式

458 :デフォルトの名無しさん:2014/12/22(月) 19:22:42.01 ID:ghZKV2ZQ
#n# #n=の話をしてるだけで循環かどうかは重要じゃないんじゃ

459 :デフォルトの名無しさん:2014/12/23(火) 06:56:15.61 ID:7FgN1VNX
トップページに循環リンクを張っとくとロボ避け用になるね

460 :デフォルトの名無しさん:2014/12/23(火) 13:13:19.47 ID:+r8FjnMV
lisp advent calendar
投稿しないなら予約するなよお

461 :デフォルトの名無しさん:2014/12/23(火) 23:21:18.03 ID:CZ3D7Ufg
寄稿者の集まりも悪いしそんな楽しみにしてるやつがいるようなカレンダーでもなかったと思うが

462 :デフォルトの名無しさん:2014/12/24(水) 00:12:59.43 ID:e2VpCcn0
殺伐とするのはgoの役目だから

463 :デフォルトの名無しさん:2014/12/25(木) 21:12:53.02 ID:X5xaJ3tH
括弧打つときの左shiftキーで小指が痛い
ctrlは変換無変換に割り当ててるから大丈夫だけどみんなは小指痛くならないの?

464 :デフォルトの名無しさん:2014/12/25(木) 21:35:41.32 ID:EL6gBj3v
脱力が重要、ピアノ弾きにきいてごらんよ

465 :デフォルトの名無しさん:2014/12/25(木) 21:58:13.43 ID:PFMshOy4
>>463
emacs使ってるならPCの変換とかMacのかなキーを開き括弧にすると良いんじゃ無いの
閉じるのはparedit任せ
つかキーボードの最下段ってなんであんなに不便な割り当てなんだろね?

466 :デフォルトの名無しさん:2014/12/25(木) 23:11:25.18 ID:CjjuayPA
>>463
ギターとピアノで鍛えてるからか、痛くなったことがない

467 :デフォルトの名無しさん:2014/12/25(木) 23:20:06.50 ID:bRuwx3hH
小指が痛くなるもやしっこは自分だけだったのか
shiftキーを親指で押せる位置にするのが一番早いかな
paredit便利っぽいけど小指の件とはあまり関係無さそう

468 :デフォルトの名無しさん:2014/12/25(木) 23:24:53.41 ID:VJozxMYe
>>467
コントロール+8にすれば?

469 :デフォルトの名無しさん:2014/12/26(金) 00:02:19.89 ID:sFMmMZhn
>>463
俺は親指で押してるが根本的な解決とは言いがたい

470 :デフォルトの名無しさん:2014/12/26(金) 07:12:03.29 ID:ZF5Prlhw
日常的にキーボードを打っていれば必要な筋肉はつくと思うけど。

なんならギタリストみたいに指の筋トレでもすれば?

471 :デフォルトの名無しさん:2014/12/26(金) 07:19:14.79 ID:Ymt/Ki/9
個人の指の長さ、筋肉の使い方、キーボードの高さや配置、いろいろ関係があるからなぁ。
どうすればうまく使えるか、微調整していくのがいいと思う。enjoy!

472 :デフォルトの名無しさん:2014/12/26(金) 11:54:23.23 ID:0Z1WSbyg
ハノンやろうか
てかピアノ弾き多いな

473 :デフォルトの名無しさん:2014/12/26(金) 14:48:40.07 ID:s2xSvg8v
俺は津軽三味線だけどな
なんで左手の小指は使わん!

474 :デフォルトの名無しさん:2014/12/26(金) 19:09:42.71 ID:X4m3180h
キーボードを押すときそこまでキッチリ押し込むとtyping injuryに成りやすい。
キーのスイッチが押し初めの方に有るキーボードを使って底付きしないように、
指の腹で押す。英語だとtyping injuryでぐぐると一杯情報有るのに
日本語だとこの手の情報あんまりないよね。。。。俺の探し方が悪いのか??

475 :デフォルトの名無しさん:2014/12/26(金) 20:21:33.27 ID:0m+CPJzh
まあ、マジレスすると左シフトでなんたらって
底づきさせてるんじゃないのか?
癖を直すのとクソキーボード変えるべきじゃないのか

476 :デフォルトの名無しさん:2014/12/26(金) 20:22:37.55 ID:XBzLiayq
>>474
あっちはタイプライターが結構前から普及してたけど、日本だとその頃は習字が該当するから。
文字書くときの姿勢関係だとペンクラブとかでも話題があるから文化的違いじゃないの?
PC普及でこれから事例が増えるといっぱい出てくる希ガス

477 :デフォルトの名無しさん:2014/12/26(金) 20:25:58.68 ID:0m+CPJzh
にほんじんは意外なやつまでブラインドできんやつ多いしな
俺が教えた学生は全員ブラインド訓練からやらせた
文句言う男子はタコ部屋で俺のために稼がせる
文句言う女子学生は文句言えないようにおれの云々棒で口を塞ぐ
という硬い決意で望んだが、みんな真面目でな
金は入らんし棒は入れられんし
悲しかったなぁ

478 :デフォルトの名無しさん:2014/12/26(金) 21:12:39.96 ID:U37YhbAO
タッチタイプという語を知らないという老害自慢しかできないなら黙ってくださいね

479 :デフォルトの名無しさん:2014/12/26(金) 23:10:04.00 ID:Dh6fXMBx
ダッチワイフに見えた

480 :デフォルトの名無しさん:2014/12/26(金) 23:50:50.17 ID:GnotqpXf
このひと病気かな ID:0m+CPJzh

481 :デフォルトの名無しさん:2014/12/27(土) 03:56:02.78 ID:nu41WR0t
>>478
わはははは
瑣末君の無駄な書き込み乙

>>478
たかが表現に拘泥するあたり才能のなさを告白してるな
ろくな研究できてないだろ

さてと
ブラインドでカチャカチャやるか

コラコラ、そこの、低能
クチュクチュじゃないからな、ほらほら、中指立てるな

482 :デフォルトの名無しさん:2014/12/27(土) 10:31:37.62 ID:fnnT6z+r
その飲み会でうざがられてるおっさんのようなセンスの18禁ネタはわざとなの

483 :デフォルトの名無しさん:2014/12/27(土) 11:22:15.74 ID:GT0kNYLG
下品さを装って強がるのがせいぜい

484 :デフォルトの名無しさん:2014/12/27(土) 12:03:58.24 ID:8H3WtYVY
瑣末で才能のカケラも無い、今すぐ回線切って首吊って、
氏ねじゃなくて死ねよゴミカス >>481

485 :デフォルトの名無しさん:2014/12/27(土) 12:45:53.81 ID:NculZWCD
R7RS-large が規定されたとして、それでいったい何を作るのだ?
CLの仕様より大きくなるらしいが。

486 :デフォルトの名無しさん:2014/12/27(土) 17:56:08.09 ID:OOwiOXEM
そんなの好きなもん作れよ

487 :デフォルトの名無しさん:2014/12/27(土) 18:33:20.71 ID:JqzH5Jvr
やっぱCommon Lispだよな
てかISLisp改良して欲しい

488 :デフォルトの名無しさん:2014/12/27(土) 20:17:01.39 ID:OOwiOXEM
お前がやれよ。 仕様なんて言い張ったもん勝ちだぞ。

489 :デフォルトの名無しさん:2014/12/27(土) 21:58:53.06 ID:qq52R1C7
CLにはとくに不満は思いつかない
処理系にはどんどん頑張ってほしいけど
あえて言うなら処理系依存の所を減らしてくれたらいいけど

490 :デフォルトの名無しさん:2014/12/27(土) 23:19:17.50 ID:8H3WtYVY
>>488
実装がともなってないと相手にされないことも多い。
(だから実装作れ、超がんがれ、という話になるわけだが)

491 :デフォルトの名無しさん:2014/12/27(土) 23:24:01.98 ID:kcXcAVhx
大学でlisp処理系を作らされる学生の数、それがlispの仕様の数である

492 :デフォルトの名無しさん:2014/12/27(土) 23:30:07.38 ID:qq52R1C7
簡単な処理系の三つや四つ

493 :デフォルトの名無しさん:2014/12/27(土) 23:31:44.97 ID:qq52R1C7
C-cC-kしようとしたらC-cC-cしてしまった
まあみんなそれくらい作ってるよな

494 :デフォルトの名無しさん:2014/12/28(日) 09:07:42.58 ID:EmbVcJ4C
わはは君ってあちこちに出てくるけど総じてキチガイで笑う

495 :デフォルトの名無しさん:2014/12/28(日) 09:25:51.22 ID:GqM4jvZj
初心者の俺にはどこらへんが基地外なのかさっぱりわからない

496 :デフォルトの名無しさん:2014/12/28(日) 10:52:27.52 ID:uZelGoi1
>>472
ハノンとかチェルニーとか人生の時間の無駄だから‥インベンションやシンフォニアがおすすめだ

497 :デフォルトの名無しさん:2014/12/28(日) 14:21:40.21 ID:lDrrlByw
誰か教えてくれ。
このマクロは (i (f)) => #f , (i f) => #t でいいのか?

(define-syntax i
(syntax-rules ()
((_ c)
(letrec-syntax ((f (syntax-rules () ((_) #t)))
(t (syntax-rules ()
((_ c) (f))
((_ x) #f))))
(t f)))))

498 :デフォルトの名無しさん:2014/12/28(日) 18:43:29.49 ID:k9mhlpYK
>>497
いいよ。

499 :デフォルトの名無しさん:2014/12/28(日) 19:13:59.16 ID:3WT3VAff
>>497
これ、定義の3行目のcと6行目のcは別ものとして扱われるはずだから、
(i Y)でYになにをもってきても7行目の((_ x) #f)は適用されんだろ。
結局、常に(i Y) => #t になる。

500 :デフォルトの名無しさん:2014/12/28(日) 19:17:22.18 ID:6IxIWlMA
 
 
     Gun = Kata

501 :デフォルトの名無しさん:2014/12/28(日) 19:46:02.03 ID:k9mhlpYK
>>499
別物にはならないよ。 同じだよ。

502 :デフォルトの名無しさん:2014/12/28(日) 19:53:47.21 ID:AQDitcxr
>>491
俺も作ったわ w
専用命令込みで

503 :499:2014/12/28(日) 20:17:27.76 ID:3WT3VAff
>>501
R5RSのsyntax-rulesの説明を見る限り、
cはパターン変数として扱われるから
7行目のcは3行目のcを参照しないでしょ。

このへん、R6RS及びR7RSで変更されたの?

504 :デフォルトの名無しさん:2014/12/28(日) 21:10:05.79 ID:9AFaWS8j
>>503
自分はMoshとGaucheを信用しているのだが、それぞれ結果が異なる。
mosh> (i f)
#t

gosh> (i f)
*** ERROR: unbound variable: f
Stack Trace:
______________

505 :499:2014/12/28(日) 23:32:50.46 ID:3WT3VAff
>>504
gaucheのdefine-syntaxってdefine-syntaxを含むマクロが定義できないバグが
あったんやけど、letrec-syntaxでも同じなんじゃないかな。

506 :501:2014/12/29(月) 02:10:36.92 ID:4HBx8iTh
>>503
パターン変数だが、それによって 7 行目の c が 3 行目の c に対応しないとする理由になると考える理由がわかんないな。

507 :499:2014/12/29(月) 07:12:27.05 ID:DmZ787iM
>>506
ごめんなさい、勘違いしてました。

508 :497:2014/12/29(月) 08:58:11.66 ID:KnCKCogl
>>507
自分もcについて同様に考えていた。それぞれのスコープがあるんじゃないか?って。

509 :デフォルトの名無しさん:2014/12/29(月) 11:35:08.08 ID:peqZoxpi
schemeの純潔マクロは時間の無駄だよね

510 :デフォルトの名無しさん:2014/12/29(月) 12:31:51.57 ID:KnCKCogl
>>509
まったくだ。それでなくても開発者人口が極めて少なく、マンパワーが
不足しているのに、貴重なリソースを健全マクロに注いでいる。

511 :デフォルトの名無しさん:2014/12/29(月) 14:42:35.74 ID:TA0KsTNu
潔癖症って健全じゃないよね
融通が効かないし、純潔でないものは無条件に悪と決めつけてるから、実務では汚染源になる

512 :デフォルトの名無しさん:2014/12/29(月) 15:14:25.22 ID:LxjJzYoX
>>511のidで思いだしたけどTAOで引数にクォートを付けて
事前に評価されないようにする定義方法あったよな
ああいうのを取り入れたlisp-2が欲しい

513 :デフォルトの名無しさん:2014/12/29(月) 15:47:38.70 ID:Ha3wslYM
貴重なリソースっていっても開発者が好きでやってることでしょ
勝手に開発者のモチベーションを共有リソースにするやつがいるんだな

514 :デフォルトの名無しさん:2014/12/29(月) 16:42:30.82 ID:KnCKCogl
>>513
気に障ったんなら許してくれ。開発者が完全な衛生的マクロを望み、
ユーザーが渇望しているのなら、それでいいと思う。孤高の人、scheme

515 :デフォルトの名無しさん:2014/12/29(月) 20:24:23.96 ID:4HBx8iTh
>>511
既に >>451 で指摘されているけど、 syntax-rules は現時点での妥協でしかないのでこれだけで「衛生的マクロ」を評価すんなよ。

516 :デフォルトの名無しさん:2014/12/29(月) 21:39:05.88 ID:FaRhf2Lb
>>515
syntax-case ってのも妥協の産物なのかい?

517 :デフォルトの名無しさん:2014/12/29(月) 22:21:18.33 ID:yyaVSOAH
衛生的マクロの利点は一応分かってる積もりだけど、CLのgensym+パッケージに比べて素晴らしいもの、とは思えないんだよなぁ。
シロウト意見だけど、これだけ何十年も決まらない、って衛生的マクロのアイディアに何処かに根本的な無理があるんじゃないの?
第1級の継続より限定継続の方が現実的、なみたいにさ。
それとも議論を尽くせばそのうち決まるものなのかな。

518 :デフォルトの名無しさん:2014/12/30(火) 02:28:17.65 ID:dHN2E2Y1
>>516
Yes。
底レベルで何をやってるかを隠していきなり高水準な機能を与えてる。
底レベルでの処理にどんなモデルを採用するかをうやむやにした結果。

519 :デフォルトの名無しさん:2014/12/30(火) 02:50:07.82 ID:dHN2E2Y1
>>517
マクロに限らずまだまだまだまだ決まってないことだらけじゃないか。
そんでもって、そもそも決めなきゃならないのかっていう議論さえときどき出てくる。
仕様にしてしまうことで実装を縛るのを嫌がってるんだよ。
それでも、どうしても決まってしまったものが仕様になる。
Schemeってそういうものだろ。 単に方針の違い。

520 :デフォルトの名無しさん:2014/12/30(火) 03:18:27.54 ID:pTIn0EX1
黒板言語は伊達じゃない

521 :デフォルトの名無しさん:2014/12/30(火) 08:09:57.76 ID:2a7COvxL
>>517
フルの継続は実装としては興味深いが、ユーザーとしては使いにくいな。
仕様を限定して実装を軽くしてやった方が使い道があるだろうと思う。

522 :デフォルトの名無しさん:2014/12/30(火) 08:27:20.30 ID:qF0mG1f3
>>473
左腕がサイコガンか何かなのか?

523 :デフォルトの名無しさん:2014/12/30(火) 14:22:27.11 ID:dHN2E2Y1
>>521
そりゃ逆だろう。 実装は面倒くさいがユーザーとしてはフルの方がわかりやすいよ。
継続が一回しか呼出されないとか、範囲が限定されているとかいうのはプログラムから読み取って処理系が最適化を頑張って欲しい。
ユーザーには制限が見えない方がいい。

524 :デフォルトの名無しさん:2014/12/30(火) 14:32:13.09 ID:3v7rngRa
メモリとCPUというどの実装にも明記されない確実な制限があるし

525 :デフォルトの名無しさん:2014/12/30(火) 14:46:07.77 ID:2a7COvxL
>>523
昔のcall/ec程度で十分だと思うがなぁ。
CLの黒田さんにもフルの継続の問題点が指摘されている。

526 :デフォルトの名無しさん:2014/12/30(火) 14:57:18.11 ID:2a7COvxL
誰が継続に永続性を持たせるべきだって言いだしたんだい?
Dybvig先生?

527 :デフォルトの名無しさん:2014/12/30(火) 15:38:37.11 ID:dHN2E2Y1
>>525
「十分」って誰基準よー。
そういう考え方やめろよ。
制限を排除していくのがSchemeの大綱だろ。

528 :デフォルトの名無しさん:2014/12/30(火) 15:57:42.62 ID:ZsdhomO+
>>527
大綱? それ、どこに書いてあるんだ?

529 :デフォルトの名無しさん:2014/12/30(火) 16:02:52.74 ID:dHN2E2Y1
>>528
Introduction

530 :デフォルトの名無しさん:2014/12/30(火) 16:18:00.44 ID:ZsdhomO+
>>527
そこまでは書いてないと思うが。
でもそう考えているschemerは多いんだろうな。

531 :デフォルトの名無しさん:2014/12/30(火) 16:19:04.99 ID:3v7rngRa
制限を排除するのか、制限を追加するのか、どっちともとれるな

Programming languages should be designed not by piling feature on top of feature,
but by removing the weaknesses and restrictions that make additional features appear necessary.

必要な機能を追加するのではなく、その機能が必要になるような弱点や制限を取り除くべき

532 :デフォルトの名無しさん:2014/12/30(火) 16:27:33.04 ID:vs+COFUK
フルの継続って、むしろ高速化するための弱点になってるような気がしなくもない

533 :デフォルトの名無しさん:2014/12/30(火) 16:30:38.38 ID:+7B8jKAW
call/ec のある Racket は流石だと言うことだ

534 :デフォルトの名無しさん:2014/12/30(火) 16:36:36.26 ID:3v7rngRa
Schemeには高速化よりも、表現の正しさを求めたい

535 :デフォルトの名無しさん:2014/12/30(火) 16:40:20.02 ID:dHN2E2Y1
>>532
明記はされていないものの、Scheme的には表現力を重視していると思う。
だからといって遅すぎてもよいというわけでもないのでそこらへんはバランスを取りながらということで。

536 :デフォルトの名無しさん:2014/12/30(火) 18:40:08.70 ID:ZsdhomO+
教えてくれ。このコードって(import cxr) を落としてるんじゃね?
https://gist.github.com/SaitoAtsushi/8784203
動かない。

537 :デフォルトの名無しさん:2014/12/30(火) 19:10:19.18 ID:ZsdhomO+
直したら動いた。これだけ変態的なマクロだと処理系のテスト用にいいな。
効率、めっちゃ悪そうだけど。

538 :デフォルトの名無しさん:2014/12/30(火) 19:52:37.92 ID:dHN2E2Y1
>>536-537
car や cdr を使ってるからか?
(scheme base) に car や cdr は含まれてるので、 (scheme cxr) を import しなけりゃ動かないというのなら処理系 (が持つライブラリ) の方が間違ってると思う。

539 :デフォルトの名無しさん:2014/12/30(火) 19:55:15.74 ID:dHN2E2Y1
>>536
それはちょっと古いやつ。
こっちの方が本格的になってる。
https://github.com/SaitoAtsushi/pattern-match-lambda

540 :デフォルトの名無しさん:2014/12/30(火) 20:01:55.94 ID:ZsdhomO+
>>538
ああ、そうなのか。妙な構成にしておくんだな。

541 :デフォルトの名無しさん:2014/12/30(火) 20:18:52.16 ID:ZsdhomO+
>>539
実用性はともかくマクロ展開期のテストにはいいな。
動かない処理系、けっこうあるんじゃないか?

542 :デフォルトの名無しさん:2014/12/30(火) 20:59:02.98 ID:ZsdhomO+
>>539
GaucheのR7RSモードで試してみたが、全然、動かないぞ。

543 :デフォルトの名無しさん:2014/12/30(火) 21:07:29.63 ID:dHN2E2Y1
>>542
known issue。
マクロでマクロを生成する系のマクロはR5RSの頃からGaucheでは動かないことがあったよ。
今のheadではexplicit renamingが実装されていて、それを元に展開器がSchemeで書き直される予定があるよ。
次のリリースで修正されるか、間に合わなければその次のリリースになるとのこと。

544 :デフォルトの名無しさん:2014/12/30(火) 21:09:36.95 ID:ZsdhomO+
>>543
了解

545 :デフォルトの名無しさん:2014/12/30(火) 21:30:59.76 ID:vs+COFUK
CLerの素朴な疑問だけど、schemeのマクロ展開器、なんでそんなに難しいんだろ。
仕様が難しいの?それとも曖昧なの?

546 :デフォルトの名無しさん:2014/12/30(火) 21:34:43.84 ID:ZsdhomO+
>>545
オレの理解では仕様がダメダメ。Gaucheでさえバグがなくならないんだぜ。

547 :デフォルトの名無しさん:2014/12/30(火) 21:40:40.95 ID:dHN2E2Y1
>>545
リソース不足。
たまにコントリビュートありつつもひとりでやってることが多いから細かなミスが残る。
そして有名どころの展開器を使わずにあえて自分で一から書いたりするのでなおさらそうなる。
比較的大きなコミュニティを持っているguile、racket、chickenではそれほど問題ない。

さすがにR6RSでは自前でマクロ展開器を書いてない方が多かったみたいだけど。

548 :デフォルトの名無しさん:2014/12/30(火) 22:07:43.30 ID:vs+COFUK
>>546-547
thx。マクロの仕様がかなり複雑で乏しいリソースじゃなかなか作りきれない、と理解した。
CLから見てると、なんでマクロ展開なんてとっくに実用になってることを、
そんな難しい問題にしてるかイマイチ、理解できないんだけど…。
自分で実装しなきゃ分からないんだろうなぁ。

549 :デフォルトの名無しさん:2014/12/30(火) 22:12:35.42 ID:rbuEeUew
>>539これをコテン的マクロに書き換えるとどうなるの
ていうか何するマクロなのか読んでもさっぱり

550 :デフォルトの名無しさん:2014/12/30(火) 22:23:04.37 ID:dHN2E2Y1
>>548
CLのマクロ(いわゆる伝統的マクロ)は
 ・健全性の確保をユーザにゆだねている (gensymを使うという規約をユーザが守らなければいけない)
 ・完全に健全にならない部分がある
 ・フェイズ(リード時とマクロ展開時とコンパイル時と実行時)がごちゃまぜでよくわからん
という問題があって、しかし「それを注意さえすれば特に問題にならないからいいや」というスタンス。

Schemeとしては「いやいや、そういうわけにいかんし」という感じ。
どちらもメリットとデメリットはあるからどっちを取るかというのは文化の違いとしか言い様がないな。

551 :デフォルトの名無しさん:2014/12/30(火) 22:26:55.23 ID:2qTBXEqI
lisp-1はシンボルが関数と変数に分かれていなくて名前が衝突しやすくなった
そのせいで伝統的な方法のマクロだとlisp-2以上に気を付けなくならなくなった
だから衛生的マクロが必要になったけど複雑さとリソース不足のせいで何十年もかけてるのにまだちゃんと決まってない

最大の原因はlisp-1だろ

552 :デフォルトの名無しさん:2014/12/30(火) 22:35:25.45 ID:dHN2E2Y1
>>551
仕様そのものがどうこうよりも単にScheme業界の気質だと思うぞ。
一旦決めてもそもそも論が出てきて覆るし。

553 :デフォルトの名無しさん:2014/12/30(火) 22:50:13.64 ID:ZsdhomO+
>>548
そうなんだよ。さっさとマクロの問題を片付けて他のことをやればいいと思うんだが。
教条主義的なところがあって自縄自縛になってるかもな。
それと開発者自身がそれを楽しんでいるという雰囲気もある。

554 :デフォルトの名無しさん:2014/12/30(火) 23:03:54.14 ID:dHN2E2Y1
キューみたいなデータ構造とかネットワーク関係とか、そういうのは語彙を追加すりゃいいだけの話でそもそも言語仕様に含める必要さえ疑問視されてるくらいなんだよな。
要はいくらでも後付けできる話なので、そうじゃない「言語のコア」として議論すべきこととしてはもうそんなにないんだよ。
強いて言えばリードマクロとかの話になるが…、それはそれでマクロ以上に決まらないだろうしな。

555 :デフォルトの名無しさん:2014/12/31(水) 05:07:33.93 ID:J6sYEaZu
>>550
CLのマクロはマクロ展開時に展開される。
展開時に必要な手続が動かなければ展開に失敗するというだけのこと。
マクロに固有の問題じゃない。よくわからんのは単にフェイズがわからんってこと。

556 :デフォルトの名無しさん:2014/12/31(水) 10:09:38.80 ID:YVAw9wDS
schemeって簡単そうに見えたけど、マクロはわけわかめだな

557 :デフォルトの名無しさん:2014/12/31(水) 20:36:28.88 ID:WNT3VYT+
Common Lisp はオブジェクトシステムがよくわからんけど。

558 :デフォルトの名無しさん:2014/12/31(水) 21:21:01.80 ID:ByR1SHSU
そもそもschemeはS式の基本データ構造としてのリストも否定材料にしてると思うよ
健全マクロはリスト操作を避ける仕組みそのものだし
S式を捨てたいって思想が透けて見えるよ

559 :デフォルトの名無しさん:2014/12/31(水) 21:44:12.81 ID:WNT3VYT+
>>558
何度も同じことを書いてるけど、
現在の syntax-rules の仕組は下層でどのようなモデルを使うかを隠した高水準のものだから、
それを衛生的マクロ一般と混同するな。 するな。 するな。
大事なことなので三度言いました。

560 :デフォルトの名無しさん:2014/12/31(水) 21:58:56.47 ID:1YJtVTFI
なるほどつまり伝統的マクロにタダで健全性を持たせることができれば大勝利なのか

561 :デフォルトの名無しさん:2014/12/31(水) 22:04:24.91 ID:wcjP10W3
>>560
それが実現できたらACMチューリング賞ものだと思う。がんばってくれ。

562 :デフォルトの名無しさん:2014/12/31(水) 22:11:46.81 ID:wcjP10W3
同一時間であればシンボルの唯一性が保証されている。健全マクロの問題は
定義時と実行時という時間が異なる空間でシンボルの唯一性を保証せよという
問題と考えられる。

563 :デフォルトの名無しさん:2014/12/31(水) 22:12:34.07 ID:WNT3VYT+
explicit renaming なんかだと扱ってるのはあくまでS式で、
シンボルをリネームするという形なのでS式の世界だけで考えることは出来る…
…んだけど、マクロ使用箇所の「外側」もリネームする必要がある場合もあって、
文脈を理解した変換が必要なのでマクロ展開器をコンパイラと上手く分離するのは難しいかも。

コンパイラとマクロ展開器をどれくらい分離するかというのは色んなアプローチがあるってshiroさんが言ってた。

564 :デフォルトの名無しさん:2014/12/31(水) 22:40:33.52 ID:+j7c76Kh
インターンする部分を一時的にフック出来れば
自動gensymがうまくいくと思うのは安直かな

565 :デフォルトの名無しさん:2014/12/31(水) 22:50:29.37 ID:WNT3VYT+
やってみれば。

566 :デフォルトの名無しさん:2014/12/31(水) 23:04:15.19 ID:geaLZRSJ
マクロ、そろそろやめませんか?

567 :デフォルトの名無しさん:2014/12/31(水) 23:28:09.90 ID:+j7c76Kh
マクロとGCと数式は中置記法云々の話がループしてるな

568 :デフォルトの名無しさん:2014/12/31(水) 23:29:11.83 ID:Z+SsAvdG
ラムダ式の世界でさえ名前の衝突は議論されてたんだから、何かシンプルな方法があるはず、とも思うし、
一方でlisp-2にしてパッケージつけてCLみたくフェーズ分けすれば終わりだろ、とも思う。

>>566
マクロ止めるならS式は単なる風変わりな記法に過ぎなくなるけどいいの?

569 :デフォルトの名無しさん:2014/12/31(水) 23:41:00.19 ID:wcjP10W3
>>568
α変換?

570 :デフォルトの名無しさん:2014/12/31(水) 23:43:27.13 ID:geaLZRSJ
文章や数式を考えるときは構造が頭の中でS式が浮かぶ

571 :デフォルトの名無しさん:2015/01/01(木) 00:37:17.60 ID:1QKDEEDD
>>570
数式は再帰構造だからね。S式はマクロのためだけでもないと思うよ。

572 :デフォルトの名無しさん:2015/01/01(木) 01:05:56.25 ID:BLuAa79y
>>566
やめてどうすんの?
なんか話題があるならお前が出せよ。

573 :デフォルトの名無しさん:2015/01/01(木) 01:40:56.38 ID:G08WKQSM
マクロ、別にいいけどね
一般論としては続ける側が面白い話をすべきだと思うよ?

574 :デフォルトの名無しさん:2015/01/01(木) 01:57:49.60 ID:BLuAa79y
>>573
面白いと思って話をしてると思うんだが、お前が面白くないと思うならお前が面白くするのが筋だろ。

575 :デフォルトの名無しさん:2015/01/01(木) 02:33:03.13 ID:0pQWBz9i
マクロは健全性とか無視すれば単に構文の置換ってだけだからなあ
それよりもその先のコンパイル段階でやるような項書き換えの方に興味ある
マクロ展開して((lambda (+ x y))1 2)みたいな無駄な適用式を(+ 1 2)に変換するみたいなやつね
この場合両方とも定数だから単なる畳み込みだけど

576 :デフォルトの名無しさん:2015/01/01(木) 05:11:40.10 ID:BLuAa79y
融合変換とか?
そういうのって適用できるパターンを大量に持っておくしかないんじゃないの。
置換えパターンをユーザが定義可能にするという方法もあるけど…。
それ Common Lisp のコンパイラマクロだし。
http://www.lispworks.com/documentation/HyperSpec/Body/m_define.htm

Haskell なんかだとそうとう豪快な変換をすると聞くけど、
動的型な Lisp ではどんな値を受取るか事前に何の保証もないので、
現実にはこういう泥臭い方法になってしまう。
理論家から見たらこれひどい仕組に見えるんじゃなかろうか。

577 :デフォルトの名無しさん:2015/01/01(木) 13:00:24.57 ID:kfvwaXN/
コンパイラコンパイラとしてのマクロの価値はみとめるが、読みやすさ目的や単なるショートカットとしてのマクロの価値は認めない

578 :デフォルトの名無しさん:2015/01/01(木) 17:15:43.61 ID:U5ycMGNA
はい次

579 :デフォルトの名無しさん:2015/01/01(木) 21:21:12.94 ID:BLuAa79y
>>555
展開のタイミングの話じゃなくて、そのときに見える「環境」について。
R6RS ではライブラリ単位でメタレベルという名の指定を与えてそれを元に分離された環境を作る。
マクロ展開時に見える環境と実行時に見える環境は別物。

でも R6RS 処理系の中でもいくつかのアプローチにわかれてる。
まずひとつは明確に分離せずうやむやにしているタイプ。 実装をあまり読んでないけど sagittarius はこのタイプだと思う。
ふたつめはユーザのメタレベル指定に厳密に従って環境を分離するタイプ。 Larceny などはこれ。
みっつめは環境は分離するがメタレベル指定によってではなくプログラムの内容を見て自動的に決定する方法 (implicit phasing) 。 Chez とかはこのタイプ。

R6RS はメタレベルの解釈について厳密な定義を与えているものの、
レベルの不整合を受入れるような実装があってもよいという逃げ道も書いてあるので、
どの方針を取るか迷いがあるんだと思う。
もしコンパイラマクロやリーダマクロを Scheme に導入するとしたら更なる混迷の渦がまきおこるに違いない。

580 :デフォルトの名無しさん:2015/01/01(木) 22:29:24.10 ID:1QKDEEDD
一階述語論理のように制限を加えよう。高階のマクロは制限しよう
・・・なんてことをschemerが許容するはずないよなぁ。
制限は排除しなきゃいけないんだから。

581 :デフォルトの名無しさん:2015/01/02(金) 08:33:14.72 ID:bPNmxNy1
>>579
CL上のCLのマクロについていってるんじゃなくて、CLのマクロをSchemeに持っていったら、という話か?
CL上の話じゃないなら、CLのマクロ、って書くんじゃなくて、Scheme上のCL方式とでも表現しろよ。

582 :デフォルトの名無しさん:2015/01/02(金) 08:42:39.63 ID:bPNmxNy1
マクロは単なるメタプログラミングの道具なのに 580 のように実現方法が難しいからマクロ自体が悪と考えるやつが出てくる始末。
Schemeマクロ話のナンセンスなところ。

583 :デフォルトの名無しさん:2015/01/02(金) 09:32:04.69 ID:q0Ppgk29
俺はマグロがいいな
トロデタノミマス

584 :デフォルトの名無しさん:2015/01/02(金) 09:39:25.45 ID:B4zclMFO
>>582
では、あなたが完璧な健全マクロの仕様と、その実装を作成して
世に問うたらどうかな? それともテストするだけ?

585 :デフォルトの名無しさん:2015/01/02(金) 10:46:12.43 ID:bPNmxNy1
>>584
Schemeマクロのユーザー目線の話をしている。
Schemeユーザーからするとマクロは重要なメタプログラミングの道具。
実現方法が難しいからマクロ自体が悪と考えるのは実装者目線であって、
なんもしらんユーザーも一緒に巻き込まれてそう考える、もしくは、
実装者がユーザーも同じように考えてると思ってるとしたら実にナンセンス。
文句があるなら作ってみせろ、ってのもまったく噛み合ってない。
ユーザー=実装者って自虐劇も大概にして欲しいよな。

586 :デフォルトの名無しさん:2015/01/02(金) 12:18:00.20 ID:eSfzQD/L
>>584
よこからだけど
どうして「では」とつなげるの?
頭おかしいの?
いやがらせなの?

587 :デフォルトの名無しさん:2015/01/02(金) 12:22:26.20 ID:/avknFXM
カンペキな健全マクロなんてものを本当に欲しいと思っているのなら、もはや病気だよ
中でいくらunsafeなことをやってても、出来上がったマクロがあらゆる入力に対してsafeであればそれでいいじゃないの
プログラミングってのは、本質的にそういうもんでしょうに…

588 :デフォルトの名無しさん:2015/01/03(土) 02:36:58.67 ID:paeJ+9Dd
>>587
> 出来上がったマクロがあらゆる入力に対してsafeであれば

少なくとも Common Lisp におけるマクロはそれが不可能であることがわかっている。

589 :デフォルトの名無しさん:2015/01/03(土) 09:58:40.63 ID:6aBF9uSO
しかし、現実的に100人規模でCommonLispを書いてる会社や、50万行から100万行規模のアプリケーションでも
それが問題になっているという話は耳にしたことがない。

航空ルート検索/予約システム 50万行から http://www.itasoftware.com/
鉄道運行システム http://www.siscog.eu/upload/GESTAO-DE-LISTAS/News/PDF/eclm-2013-siscog-a-story-written-in-lisp-20130602.pdf

昔から積み重ねた実績からして既に充分で新しいマクロ方式に対しての需要もないのだろう。
ずっと昔からCommonLispでは、マクロは実装方式を議論するものではなくて、当り前のように使う単なるツールなんだよ。

590 :デフォルトの名無しさん:2015/01/03(土) 10:32:58.23 ID:PIPBKeIo
なるほど。
schemeも伝統的マクロ+gensymでもいいんじゃね?

591 :デフォルトの名無しさん:2015/01/03(土) 11:30:42.47 ID:6aBF9uSO
>>590
伝統マクロ好きだけど、schemeで伝統的マクロ+gensymは駄目だと思うが。
しかしschemeにとってマクロというのはこれから未来の話か?
現在主流の方式も、もう20年前には出尽してるし、メジャーな処理系もマクロのシステムは確立してるだろ。

592 :デフォルトの名無しさん:2015/01/03(土) 13:10:06.10 ID:paeJ+9Dd
運用で回避できると言えば出来るけど、だからこれで行けというのも違うだろ。

C/C++ では簡単にバッファオーバーランが起こるとかいうのと同じレベルの話だと思う。
C/C++ ってそういうもんだし、その分だけ出来ることもあると理解していても、
後続の言語ではマシにしようという方向に動いてるだろ。

593 :デフォルトの名無しさん:2015/01/03(土) 15:10:46.94 ID:PIPBKeIo
>>591
>schemeで伝統的マクロ+gensymは駄目だと思うが。

なぜ?

594 :デフォルトの名無しさん:2015/01/03(土) 15:13:40.86 ID:lwZqDtlD
lisp-1だからじゃないの
http://blog.practical-scheme.net/shiro?20100425-scheme-macro

あとCLerの立場としてはSchemeが頑張っていいもの作ってくれたらそれ貰えばいいだけなんだから、応援するところじゃないの

595 :デフォルトの名無しさん:2015/01/03(土) 15:16:41.73 ID:6aBF9uSO
>>592
いっとくけど、CommonLispでのマクロに対するレスで、CommonLispでの話だからね。
危険性が0じゃなかったら何一つ実用的なものは書けないのかよってこと。
schemeで伝統的マクロ+gensymはそれこそ簡単にバッファオーバーランが起こるとかいうのと同じレベルだろ。

でもCommonLispでの問題点とそれを運用で回避する方法を具体的に知ってて言ってんの?
パッケージロックで何万行レベルのコードでも簡単にほぼ100%回避できるよ。マシにしようという方向に動いてるって話だな。
CommonLispトータルのシステムと、取ってつけたようなscheme+伝統的マクロを同じ俎上に乗せないでくれよ。

596 :デフォルトの名無しさん:2015/01/03(土) 15:43:34.05 ID:PIPBKeIo
arc もlisp-1だったのでは?

597 :デフォルトの名無しさん:2015/01/03(土) 16:37:16.80 ID:9iTpTR8I
arcは核を小さくしたかったからシンボルに名前空間を付けるのを避けたんじゃないの?
lisp-2にするとfuncallとかfunctionとかsymbol-*が必要でどうしても大きくなってしまいそう

598 :デフォルトの名無しさん:2015/01/03(土) 16:37:49.48 ID:lwZqDtlD
arcがlisp-1で伝統マクロを使ってるからと言って変数がシャドウされやすいという問題がなくなったわけではないでしょ
ちょっと検索するとarcにhygienic macroくっつけたコンパイラが公開されてたりするみたいだし
arcのtutorialに書いてあるように、grahamがhygienic macroに対し懐疑的なのでそういう実装になってるだけ
それに対して、変数のシャドウが問題だと考える人たちもいて、>>591というかschemeコミュニティはそっちの考えが主流なんでしょ

でいいのかな、あんま詳しくないけど

599 :デフォルトの名無しさん:2015/01/03(土) 16:49:33.65 ID:PIPBKeIo
>>598
>arcがlisp-1で伝統マクロを使ってるからと言って変数がシャドウされやすいという問題がなくなったわけではないでしょ

grahamさんには変数シャドウの問題回避よりも優先させたいが利点が伝統的マクロにあったのではないの?

600 :デフォルトの名無しさん:2015/01/03(土) 16:54:07.60 ID:XTjqDow2
コンパイラコンパイラとしてのマクロと、ユーザのショートカットとしてのマクロは、議論を分けるべきだと思う

601 :デフォルトの名無しさん:2015/01/03(土) 16:56:42.27 ID:lwZqDtlD
>>599
例えば?
君が調べてここに書いてくれるとみんなの役に立つと思うよ

602 :デフォルトの名無しさん:2015/01/03(土) 17:12:00.12 ID:PIPBKeIo
>>601
さあ、本人に聞いてみないとわからん。

schemerは衛生的マクロ探求の道を選んだ。極めればよいと思う。
でも、それが唯一絶対の選択肢ではないだろうということだ。

603 :デフォルトの名無しさん:2015/01/03(土) 17:28:38.80 ID:lwZqDtlD
本人に聞いてみないとわからんこと他人に聞いたわけ?
延々質問攻めしといて誰もが分かってるようなこと偉そうに呟いて終わりとか失礼すぎませんかね
なんか苛ついちゃった、ごめんね

604 :デフォルトの名無しさん:2015/01/03(土) 17:31:59.60 ID:PIPBKeIo
>>603
それはすまなかったな。
衛生的マクロが絶対という論調に反発していたんだ。失礼した。

605 :デフォルトの名無しさん:2015/01/03(土) 17:38:24.77 ID:2SRjvD7p
(来年の今頃にはマクロの話題に少しは参加できるようになりたい)

606 :デフォルトの名無しさん:2015/01/03(土) 17:51:04.31 ID:XTjqDow2
macroexpand やりまくって例外探していくだけの簡単なお仕事です

607 :592:2015/01/03(土) 19:58:10.40 ID:paeJ+9Dd
>>595
そんなこと言ってないだろうがよ。 むしろお前の主張と同じだ。
Common Lisp はノウハウまで全部含めて CL だから Scheme で後追いすんのアホくせって話。

608 :デフォルトの名無しさん:2015/01/03(土) 23:34:02.52 ID:X/8nNPIn
横からですまん。ちょっと論点整理していい?素人なので違ってたらつっこんで欲しい。
Schemer も Lisper もとりあえず合意できることを列挙しておきたいんだ。

1. Common Lisp の伝統的マクロは健全(衛生的)でない。ので、危険性はゼロでない。
1.1 しかし、CL では大規模プロダクトでも何ら問題は生じておらず、実用的な
道具になっている。理由は、Lisp-2 であること、パッケージロックの機構(ただし処理系依存)の二つ。
2. Scheme は健全なマクロを目指している。
2.1 そもそもlisp-1 のため CL よりも健全性が問題になりやすい。
2.2 syntax-rules は高水準の仕組みで 衛生的マクロとイコールではない。

609 :デフォルトの名無しさん:2015/01/04(日) 00:38:59.42 ID:368qL5zb
>>608
> Lisp-2 であること、パッケージロックの機構

言語機能に加えて問題を避けるノウハウとかプログラマの意識みたいなのもあるわな。

Common Lisp では、処理系は道具なんだからプログラマが間違えたら結果が間違ってるのは当たり前だろみたいな意識があるけど、
Scheme では「原理的に」どうだろうということを考えてしまうところがあると思う。

これは比較できる事実を提示しづらいので異論はあると思うけど、根本的な意識が違うところ向いてる感じはあるんじゃないかな。

610 :608:2015/01/04(日) 08:11:33.26 ID:Qvf/pCiq
>609
ありがとう、修正してみた。異論がありそうなところは?を付けといた。
まだ色々漏れてると思うんで、がりがり書き替えて欲しい。

1. Common Lisp の伝統的マクロは健全(衛生的)でない。
よって、危険性はゼロでない。
1.1 しかし、CL では大規模プロダクトでも何ら問題は生じておらず、
実用的な道具になっている。
1.1.1 言語の機能として CL は Lisp-2 なので
Scheme に比べて問題が生じにくい。
1.1.2 パッケージロックの機能(ただし処理系依存)が危険性を減らす。
1.1.3 危険を避けるノウハウが確立しており、問題が生じても
プログラマの責任と見做される(?)。

2. Scheme は健全なマクロを目指している。
2.1 Scheme は lisp-1 なので CL に比べて問題が生じやすい。
2.2 syntax-rules は高水準の仕組みで 衛生的マクロとイコールではない。
2.3 問題が生じないこと、を目指している(?)

611 :デフォルトの名無しさん:2015/01/04(日) 12:49:20.44 ID:eBd7g4M7
自分用にすれば?
自分にとっての一般化の過程ではありえても、誰にとってもそうである状態としての一般化は試みるほうが変

612 :デフォルトの名無しさん:2015/01/04(日) 14:35:21.21 ID:LKpGlVIg
>>608 Schemer も Lisper もとりあえず合意できることを列挙しておきたいんだ。

合意ということなら、マクロはlispにおいては有用と考えているから導入されている、ということ位だけだよ。

CLではだいたい上手く行ってるからはっきり言ってどうでも良いトピック。

マクロがツールとしてどういう物なのかという、Lispプログラマ的なバランス感覚が弱い奴は、
話の落とし所も分からんから、完璧な健全性とはぁ、とか、
それに反発してマクロ廃止論や制限論をぶち上げたりする。それがループしてるだけ。
話の内容からしてユーザー不在だし、そういうのはschemeの実装者者寄りの奴なんだろ。

lispプログラマとしては、完璧な健全性云々よりも、マクロを書くマクロが壊れてたら嫌って話はあるけどね。

613 :デフォルトの名無しさん:2015/01/04(日) 19:03:14.60 ID:CJscx6IG
ちょっと基本的なことなんだけどお
define-syntaxってなんでグダグダわけのわからんネストを強要するの?
伝統的が
(define-macro (swap! a b)`(let((tmp ,a))(set! ,a ,b)(set! ,b tmp)))
と書けるなら
(define-syntax (swap! a b)〜)となぜ書けないの?
なんで
(define-syntax swap!
(er-macro-transformer
(lambda (form rename compare)
とかダラダラ書かせたりするの?
(define-er-syntax (swap! a b)(rename-let(let set! tmp)〜))
みたいなものを自分で定義しろってことなの?
あと
(define-syntax swap!
(syntax-rules ()
このsyntax-rules ()の()は何なの?
無駄多すぎね?

614 :デフォルトの名無しさん:2015/01/04(日) 19:09:39.72 ID:CJscx6IG
ぐぐったらsyntax-rules ()の無意味な()は判ったよ
でもセンスは感じられないな
ユーザーはこんなの求めてないと思う
一見して何してるのかさっぱりじゃC++と変わらねーよ

615 :デフォルトの名無しさん:2015/01/04(日) 20:54:40.78 ID:368qL5zb
>>613
> (define-syntax (swap! a b)〜)となぜ書けないの?

それだと一種類のパターンしか書けない。
パターン一個で受けて分解して数種類のパターンと比較して分岐するということをやってたら、結局はそこそこの分量になる。
パターンの分解はどちらにせよ必要であることを考えると最初から仕組として持っていた方が簡単だよ。
R7RS の派生式型の項にある事例 (let とか do とか) を syntax-rules なしで書いてみるといい。 絶対に長くなるから。

> (define-syntax swap!
> (er-macro-transformer
> (lambda (form rename compare)
> とかダラダラ書かせたりするの?

これについては余計と言えば余計ではある。
現時点ではどんな仕組みを底レベルマクロとして採用するのか確定してないので、 er を特別扱いすることが出来ないんだ。
er を底レベルマクロとして採用している処理系で er-macro-transformer を挟まずに使える処理系は存在する。

> (define-er-syntax (swap! a b)(rename-let(let set! tmp)〜))
> みたいなものを自分で定義しろってことなの?

そう。
ささいな見た目の違いは簡単に吸収できるので問題ではないという意識が存在するのは確か。

616 :デフォルトの名無しさん:2015/01/04(日) 21:23:47.83 ID:CJscx6IG
>>615
ありがとう
schemeの健全マクロコードが全く本スレに貼られない状況がわかった気がする

617 :608:2015/01/04(日) 23:44:07.23 ID:Qvf/pCiq
>>612
うーん、CLとSchemeっておれが想像してた以上に考え方が違うんだね。

>>611
了解。

618 :デフォルトの名無しさん:2015/01/05(月) 00:43:48.23 ID:RVoVEHcD
マクロは地獄や

619 :デフォルトの名無しさん:2015/01/05(月) 02:01:55.72 ID:NkHDsaEk
マクロは真っ黒だからな。

620 :デフォルトの名無しさん:2015/01/05(月) 08:59:07.31 ID:RiveyRBi
As a general rule, macros should not be used when a procedure will do.

621 :デフォルトの名無しさん:2015/01/05(月) 09:46:47.88 ID:fxjHSPae
so natural it is.

622 :デフォルトの名無しさん:2015/01/05(月) 20:19:58.40 ID:hlzryZMM
ISLISPでtheはあるのにdeclareやdeclaimが無いのがよくわからない
なんで無いの

623 :デフォルトの名無しさん:2015/01/05(月) 22:31:21.18 ID:nOMDhe0/
他の言語はこういう話題で盛り上がってるけど、2015年はLispにとってどういう年になりますか?
ttp://gihyo.jp/dev/column/newyear/2015/pronama-lang-prospect

624 :デフォルトの名無しさん:2015/01/05(月) 22:59:23.60 ID:07fstt/4
その答えは、Lisperの数だけあるだろう、、みたいな

625 :デフォルトの名無しさん:2015/01/05(月) 23:46:00.97 ID:mLtk6pyN
おれがオレオレschemeをついに完成させる

626 :デフォルトの名無しさん:2015/01/05(月) 23:59:31.43 ID:bLdX1D5l
今年こそ真面目にオレオレlispを完成させる

627 :デフォルトの名無しさん:2015/01/06(火) 00:34:11.83 ID:eMck3PiG
>>617
メゲずにまとめ続けてほしい
それぞれが今感じている空気を明文化しておかないと文化の継承が行われないので
無駄な争いが繰り返されるし、初学者にも分かり辛くて、ゆくゆくは衰退する気がする

628 :デフォルトの名無しさん:2015/01/06(火) 11:54:24.55 ID:8Sq14aUr
そりゃ学級会の黒板になるな
意味なし

629 :デフォルトの名無しさん:2015/01/07(水) 18:47:53.19 ID:B1sfmm34
common lisp以前の古いlispの書籍を読んでみたい
だれか知らない?

630 :デフォルトの名無しさん:2015/01/07(水) 18:56:53.14 ID:QndgHfhF
初めての人のためのLISPは?

631 :デフォルトの名無しさん:2015/01/07(水) 19:05:54.13 ID:B1sfmm34
>>630
もってる
正確にはcommonlispが完成する前の古典がいいんだ

632 :デフォルトの名無しさん:2015/01/07(水) 19:05:59.78 ID:yOI2m8ms
http://www.amazon.co.jp/dp/4871482006

633 :デフォルトの名無しさん:2015/01/07(水) 19:34:00.10 ID:B1sfmm34
>>632
買いたい
、が高い

634 :デフォルトの名無しさん:2015/01/08(木) 08:31:09.10 ID:z45nhpuk
>>629
日本で最初のLisper 中西先生の本
Lisp入門(第3版) (コンピュータ サイエンス 大学講座 1)

635 :デフォルトの名無しさん:2015/01/08(木) 15:56:44.31 ID:aY0FCIQ3
>>634
よこレスだが、中西正和氏が日本で最初のLisperという理由を詳しく教えて欲しい。
古くは、中西正和氏の他に、後藤英一、 和田英一、黒川利明、各氏がLISPを啓蒙していたと思う。
処理系であれば、和田英一氏の東大のLISP 1.5が1966年。
中西正和氏のKLISPが1967年。
翻訳でない日本最初の書籍は、1972年にLISPとその応用例 雨宮綾夫氏のようだが。

636 :デフォルトの名無しさん:2015/01/08(木) 16:33:57.81 ID:z45nhpuk
日本で最初にLispを紹介したのが中西先生だと思ったけどなぁ。
違ったかな。日本に処理系がない時代に自分でLisp処理系を作った方。
古いBitにご自身の述懐があったはず。


はちみつさんかい?

637 :デフォルトの名無しさん:2015/01/08(木) 21:08:14.97 ID:+zWvjOL7
>>634
ok
注文した

638 :デフォルトの名無しさん:2015/01/08(木) 21:48:08.58 ID:62O1Eo70
>>636
正確に調べたわけじゃないってことね。
当人が知らなかったということがありえるので、
自分が最初だという自己申告じゃなくて、
いつどういう媒体で紹介したのか、
又はいつどういう媒体で紹介したという記述がどこにあるか
という情報が >>635 は欲しいんだと思う。

639 :デフォルトの名無しさん:2015/01/08(木) 22:08:10.45 ID:97pfwZu7
めんどくせえ

640 :デフォルトの名無しさん:2015/01/08(木) 22:17:56.20 ID:I6LRI8zU
>>日本で最初のLisper
なんて言い方を安易にする人をあいてにしてもなあ

641 :デフォルトの名無しさん:2015/01/09(金) 01:03:57.91 ID:3SGTHVMD
だよな。 最初に知った人か最初に紹介した人か最初に実用した人か最初に論文に引用した人かはっきりしないしな。
まあ初期の Lisper ってことをちょっと誇張して言っただけと理解するよ。

642 :デフォルトの名無しさん:2015/01/09(金) 02:08:55.23 ID:Uc7qUqpP
>>636
中西正和氏がKLISPを開発した1967年、1943年生れの中西氏は24歳。
コンピュータは計算機センターに鎮座するものだった当時、
新進気鋭のLisperだったことは確かで日本で最初のLisperであってもおかしくはないよ。
ただ最初のLisperという記述が存在するなら、掘り下げて知りたかっただけ。
和田英一氏の話をみつけたが、日本には1964年にIBMがLispを持ってきたのが最初みたいね。
https://www.youtube.com/watch?v=w8IxEQmtjSE
LISPというもの自体は1960年には日本でも知る人はいたらしい。

643 :デフォルトの名無しさん:2015/01/09(金) 06:12:53.28 ID:wLSqpqLQ
っ「情報処理シリーズ4 LISP」by ウィンストン&ホーン

644 :デフォルトの名無しさん:2015/01/09(金) 06:40:16.59 ID:5XPJ8V7J
知らんけど学術論文にでたら読んでる人は沢山居るんじゃないの?

645 :デフォルトの名無しさん:2015/01/09(金) 12:55:07.46 ID:3SGTHVMD
当時の日本の「業界」なんて狭いもんだろ。
もちろん業界の人は読んでた可能性はあるが、
絶対数が少なければ沢山の人が読んでたというわけじゃないだろ。

646 :デフォルトの名無しさん:2015/01/09(金) 16:58:08.02 ID:pC9nRlgZ
>>637
楽しんで。3版はわからないけど2版まではM式のことも書かれていたよ。
竹内先生の本でも引用されてるね。
初期の理論的、実験的なLispの雰囲気が感じられると思うよ。
パソコンの黎明期、その本で勉強してZ80や6502で自作した人が多かったんだ。

647 :デフォルトの名無しさん:2015/01/09(金) 17:14:28.04 ID:pC9nRlgZ
めんどくさいなぁ。じゃあこれならいいだろ。

中西先生
日本が世界に誇るLispの第一人者であり、日本のLisp黎明期に
大きな貢献のあったお方。
Apple-Lispで広くLispを普及させることに尽力された。

648 :デフォルトの名無しさん:2015/01/09(金) 17:25:14.92 ID:kLhUIc/v
なんでそこまで固執するの?
精神病なの?
信者なの?
間抜けなの?

649 :デフォルトの名無しさん:2015/01/11(日) 00:50:40.64 ID:1uYYZkmG
てす

650 :デフォルトの名無しさん:2015/01/11(日) 20:54:14.26 ID:1uYYZkmG
Ltkってポータブルなプログラム作れる?
例えばwindowsで事前にtkが無くても動くバイナリを配布したい

651 :デフォルトの名無しさん:2015/01/11(日) 21:27:52.73 ID:G/dsTvxp
ltkってwishを操作してるだろ
wish用意しないと動かないんじゃないかな

652 :デフォルトの名無しさん:2015/01/11(日) 23:09:11.92 ID:1uYYZkmG
>>651
くーっありがと

653 :デフォルトの名無しさん:2015/01/12(月) 09:48:41.69 ID:8IfW5imj
インタプリタとREPLって違いますか?

654 :デフォルトの名無しさん:2015/01/12(月) 09:49:51.72 ID:8IfW5imj
インタプリタじゃなくて対話モードでした

655 :デフォルトの名無しさん:2015/01/12(月) 12:44:42.58 ID:QwIrvaxB
Read-Eval-Print-Loop の略であることからもわかるように、 REPL は eval の概念を持つ LISP の用語。
LISP における対話モードのことを REPL というと理解していい。
今では拡大解釈されて対話モードのことを REPL と呼ぶ場面は多いので、
非公式な場面では違いは気にしなくていい。
公式なドキュメントの類では用語の意味を厳密に定義していることもある。

656 :デフォルトの名無しさん:2015/01/12(月) 13:34:18.50 ID:8IfW5imj
>>655
ありがとうございます

657 :デフォルトの名無しさん:2015/01/17(土) 20:01:27.81 ID:izv0Z2NU
>>629
LISPの古典ならマッカーシーの書いたこれで間違いない
タダで読めるし
http://www.softwarepreservation.org/projects/LISP/book/LISP%201.5%20Programmers%20Manual.pdf

658 :デフォルトの名無しさん:2015/01/17(土) 21:16:35.88 ID:o3oA1RII
>>652
wishも入れて配布すればいいじゃん。
ライセンスがGPL系で良ければGTKでもいいし。

659 :デフォルトの名無しさん:2015/01/17(土) 22:16:08.04 ID:fPiUEmNV
LISP × GUI × マルチプラットフォーム で最善のツールキットを探す道
McClimがwindowsで使えたら良かったんだけど

660 :デフォルトの名無しさん:2015/01/18(日) 11:00:09.62 ID:SofTlcQP
scheme系だけどracketじゃ駄目?

661 :デフォルトの名無しさん:2015/01/18(日) 11:22:49.90 ID:RMv1VVrI
Lispって、ネストのオンパレードで全体のコードが記述されるのが
きもくもふつくしい点であるという認識でおk?

662 :デフォルトの名無しさん:2015/01/18(日) 12:00:39.60 ID:8C45mKK2
>>661
お前のいう、ネストのオンパレードで全体のコードが記述されてるLispコードを教えてくれ
何いってるのかさっぱり分からん。
a(b(c(d(e(f(g())))))) か
x=g();x=f(x);x=e(x);x=d(x);x=c(x);x=b(x);x=a(x);return x; かってこと?
どちらでも書けるよ

663 :デフォルトの名無しさん:2015/01/18(日) 12:21:58.45 ID:b1+UNBO3
>>661
エヘヘ
前から後ろから責められて
一組終わるとまた次の一組に前から後ろから責られて
朝まで寝かせてくれないの?
(sub1 (sub1 (sub1 (sub1 onna ))))

もういや!好きにして
エヘヘ
(((lambda (f)
( (f f)
(f (lambda (x) ((f f) x)))))
(lambda (r)
(lambda (n))
(if (=< n 0) 0
(r (sub1 n))))))
108)

煩悩よのう、108回も射精されちゃうんだぁ

664 :デフォルトの名無しさん:2015/01/18(日) 13:36:31.88 ID:VmLGnzyY
こいつはひでぇ

665 :デフォルトの名無しさん:2015/01/18(日) 13:43:04.69 ID:EyFQu+uw
よかったなお友だちができて

666 :デフォルトの名無しさん:2015/01/18(日) 13:45:04.49 ID:8C45mKK2
=< がつかえる処理系って何?

667 :デフォルトの名無しさん:2015/01/18(日) 17:55:27.08 ID:b1+UNBO3
エヘヘ
スマホでうったから少し間違ってるけど、だって女だって彼女と思って入れちゃったら強姦罪でつかまっちゃうことよくあるだろ?
でも少し修正
誤 (lambda (n))
正 (lambda (n)

誤 =<
正 <=

男は黙って順番守って不動点前から後ろからコンビネーター

668 :デフォルトの名無しさん:2015/01/18(日) 18:28:59.06 ID:IYMELPkN
>>666
定義すればどの処理系でもつかえる、イミフだけど

669 :デフォルトの名無しさん:2015/01/19(月) 00:59:01.64 ID:H0JxNFUw
>>666
ghci とか

670 :デフォルトの名無しさん:2015/01/19(月) 01:09:12.45 ID:vB5dyD1F
厭味ったらしく疑問形で攻撃する奴って、人としてなんか嫌だわ

671 :デフォルトの名無しさん:2015/01/19(月) 03:02:03.51 ID:+Lqzrcjp
どちかというとLispの話題関係なしに人格がどうのとかいう奴の方がうざい
prologライクな処理系でも=<採用してるかもしれんだろが

672 :デフォルトの名無しさん:2015/01/19(月) 06:26:10.62 ID:0GUS8Yso
最近Lisp以外でもメタプログラミングの話題を見かけるようになってきたけど、
パターンマッチで書けるマクロは別にS式でなくてもいいのか。

ポールグレアムのエッセイを読みかじった限りでは、本気でメタプログラミングしようとしたら必然的にS式みたいな見た目になるとあったが・・・

673 :デフォルトの名無しさん:2015/01/19(月) 07:17:05.27 ID:+Lqzrcjp
>>672
S式で構文組むのと、中置記法で構文組むので、どっちが楽だと思う?
中置記法は考えなくちゃならないことが沢山あるよ。やることは同じなのにね。
センスがない人が作った構文規則を読解する大変さもS式とは比べものにならないと思うよ。

674 :デフォルトの名無しさん:2015/01/25(日) 14:05:17.86 ID:VlSBWUaZ
逆ポーランド記法いいよ。

675 :デフォルトの名無しさん:2015/01/25(日) 16:14:10.99 ID:oYybbT2J
いやどうだろう
(+ 1 2 3 4 5)とかできないし(1 2 3 4 5 + + …て数える必要ある。1個足りずゲームオーバー)
制御文とか気持ち悪いし
S式も気持ち悪いかもしれないけど
頭のシンボルで何が起こるか一貫して判断できるのは楽だよ

676 :デフォルトの名無しさん:2015/01/25(日) 17:50:21.11 ID:SCpZiFUY
LISPを学び始めた時に一番戸惑ったのは、
関数呼び出しとマクロ呼び出しの構文が同じということだった。
その関数またはマクロの定義を知らないと、
全部の引数が評価されるかどうかすらわからないという。

677 :デフォルトの名無しさん:2015/01/25(日) 18:36:00.23 ID:fotOuDOu
それはよく言われることだな。 括弧の意味が場合によって異なる。
可能な限りは、関数呼出しとマクロの区別を意識しなくても自然に書けるようにデザインすべきだけど、混乱してしまうことはあるわな。
結局はトレードオフの話で、 LISP は全部が括弧っていうことの利点の方が大きい方を取ったってことだから、
欠点の方が上回ると考える人は諦めるしかしゃーない。

678 :デフォルトの名無しさん:2015/01/25(日) 19:04:46.91 ID:/ILbZFHt
評価モデルに興味がない俺は勝ち組だな…

679 :デフォルトの名無しさん:2015/01/25(日) 21:40:16.52 ID:N/2viYWx
>>674
逆ポーランドは、記法というより、入力として優れてるな。
つまり電卓にピコピコと打ち込んでいくとき。
エディタとかでソースを(行ったり来たりして)自由に編集できるような時には、また別だな。

680 :デフォルトの名無しさん:2015/01/26(月) 00:18:05.47 ID:7chHv/Eb!
スタック型言語ってやつだよね。postscriptとか

681 :デフォルトの名無しさん:2015/01/26(月) 00:40:09.06 ID:JXLXqXue
Postscript派生のPDFもね。

682 :デフォルトの名無しさん:2015/01/26(月) 00:43:58.26 ID:iZHP10LQ
Forth

683 :デフォルトの名無しさん:2015/01/26(月) 13:44:12.08 ID:NiwRrDAY
>>676
関数呼び出しとマクロ呼び出しの構文が同じで戸惑うやつって一定数いるよね。
ある程度の命名規約みたいなゆるいものはあることが周知されてないってことなのかな。
でも、戸惑った経験のある奴に話を詳しく聞くと中途半端なんだよね。
(set! x 3)のx、(if a b c)での、b c、(define (f x) )での、f、xなどの評価で悩んでる人はいないみたい。
不思議だよね。

684 :デフォルトの名無しさん:2015/01/26(月) 20:40:06.93 ID:4zyEVdgP
(push stack 1)とかを関数で作ろうとしてはまるんじゃないかな
(define stack '())
(define(fpush stack o)(set! stack(cons o stack))stack)
(define(fpop stack)(if(null? stack)#f(prog1(car stack)(set! stack(cdr stack)))))
正しくは下のようなコードかマクロ
(define(make-stack)(list 'stack))
(define(fpush stack o)(set-cdr! stack(cons o(cdr stack)))stack)
(define(fpop stack)(if(null?(cdr stack))#f(prog1(cadr stack)(set-cdr! stack(cddr stack)))))

685 :デフォルトの名無しさん:2015/02/10(火) 00:30:09.76 ID:tqHZRQkI
Lisperって世の中の何の役にも立たないのに態度だけでかくて嫌だわ

686 :デフォルトの名無しさん:2015/02/10(火) 00:41:44.23 ID:XVYkzgVe
だって頭いいからね

687 :デフォルトの名無しさん:2015/02/10(火) 01:06:47.56 ID:k6AusJkj
Lisper(のふりをしたLisp齧っただけの選民思想持ち)
の声が大きいせいでlisp使ってると変な目で見られて迷惑

688 :デフォルトの名無しさん:2015/02/10(火) 01:14:38.03 ID:fRDEvoke
俺のそそり立つチンコ見てもそう言えるか?ああん?

689 :デフォルトの名無しさん:2015/02/10(火) 01:18:07.27 ID:B8CTINpo
逆恨みアンチのいない言語ってないのかねえ

690 :デフォルトの名無しさん:2015/02/10(火) 01:19:51.15 ID:fRDEvoke
BASICならいそうにないなあ
イルノカナ

691 :デフォルトの名無しさん:2015/02/10(火) 02:41:13.27 ID:tqHZRQkI
Lisp使っている時点で馬鹿確定だわな

692 :デフォルトの名無しさん:2015/02/10(火) 04:55:00.38 ID:aeiYROV4
好きなCommon Lispで新しいWeb開発を〜京大中退、22歳のサムライトCTOが取り組んだシステム再構築
http://engineer.typemag.jp/article/somewrite_cto

Cより速いCommon Lisp
http://togetter.com/li/740107

サムライトはCommon Lispという最先端の技術を使う数少ないWeb企業です。
http://blog.8arrow.org/

3月5日 (木) に「Clack Meetup #1」というイベントをサムライト株式会社のオフィスにて開催します。
http://blog.8arrow.org/entries/2015/01/20

なぜなら、僕を理解するにはまずCommon Lispを理解しなければならないからです。Common Lispとその言語思想を理解することで、ようやく僕がこれまで生み出してきたものを理解するに至ります。
http://nitro-idiot.hatenablog.com/entry/2011/11/11/222814

693 :デフォルトの名無しさん:2015/02/10(火) 06:34:10.82 ID:cHYpWE0N
>>691
劣等感滲み出る書き込みだね

694 :デフォルトの名無しさん:2015/02/10(火) 08:43:16.32 ID:tqHZRQkI
Common Lispのコードは醜い

695 :デフォルトの名無しさん:2015/02/10(火) 09:05:50.54 ID:tqHZRQkI
http://benchmarksgame.alioth.debian.org/u32/performance.php?test=nbody
LispがCより速いとかデマに騙されないように

696 :デフォルトの名無しさん:2015/02/10(火) 09:56:46.42 ID:aeiYROV4
↑だまされないように

Cより高速なCommon Lispコードを書く
http://blog.8arrow.org/entry/2014/10/23/063044
>Cの「http-parser」より6.4倍高速です。
>比較対象のCのhttp-parserはNode.jsで使われているものなので、
>かなりの高速化が施されていると推測されますが、それを
>Common Lispに移植したら少しだけ速くなりました。
>処理系依存のハッキーなテクニックを使ってるわけでもなく
>標準の機能だけで。

標準の機能だけでCより6.4倍高速ですが何か?

697 :デフォルトの名無しさん:2015/02/10(火) 10:14:52.15 ID:tqHZRQkI
>かなりの高速化が施されていると推測されますが、
これは空想だし、
>>695
現実は殆どのケースでトリプルスコアで負けている
騙されてはいけない

698 :デフォルトの名無しさん:2015/02/10(火) 10:30:28.76 ID:aeiYROV4
Lisp:よくある誤解
http://practical-scheme.net/wiliki/wiliki.cgi?Lisp%3A%E3%82%88%E3%81%8F%E3%81%82%E3%82%8B%E8%AA%A4%E8%A7%A3

LISPは速い - 翡翠はコンピュータに卵を生むか
http://d.hatena.ne.jp/masatoi/20100118/1263741706

ろーてく - ブログ Common Lisp 早い!?
http://lowtech.oops.jp/modules/weblogD3/details.php?blog_id=84&cat_id=12

:: Lispって意外と速い? | 世界の半分〜まじかる☆ちきんれーす ::
http://halfworld.jugem.jp/?eid=130

LISP ベースの「世界最速」 (と作者が信じる) ウェブサーバ - スラッシュドット・ジャパン
http://slashdot.jp/developers/article.pl?sid=09/05/28/0218247

リリカル☆Lisp開発日記 » Blog Archive » LispをCより速くする

Island Life - 「Cで書くコードの方がCommon Lispで書くより速いって人がいたら、それは彼のCの技量が高すぎるってことだね。」
http://blog.practical-scheme.net/shiro/20100620a-lisp-speed

Lisp は「C 言語並みに速い」「C 言語より速い場合がある」
http://valvallow.blogspot.jp/2010/06/lisp-c-c.html
http://blog.bugyo.tk/lyrical/archives/219

699 :デフォルトの名無しさん:2015/02/10(火) 10:34:18.20 ID:tqHZRQkI
>>695
Cより速いのひとつもないのが現実

700 :デフォルトの名無しさん:2015/02/10(火) 10:39:03.20 ID:CJY92eMD
>>687
そういう構造ってどこにでも見るよね
権威主義的なやつがハクつけるために嗅ぎ付けて来ちゃう

最近馬鹿にされがちな意識高い系ってのもまるごと
そういう振る舞いに憧れて量産された馬鹿のことなんだよな

701 :デフォルトの名無しさん:2015/02/10(火) 10:56:08.84 ID:zSCFRYjG
LispはCより速い、はざっくりしすぎてて誤解も生むけど、
CommonLispがRubyやPythonより大体100倍のオーダーで速くてCにも迫れる位の認識は広まったから良いんじゃね?ってところだな。
言われなければ、CommonLispはRuby位の速度だって思ってるんじゃないかな。

702 :デフォルトの名無しさん:2015/02/10(火) 10:57:43.08 ID:ksYpl7Rb
> 言われなければ、CommonLispはRuby位の速度だって思ってるんじゃないかな。
俺そういう認識だったw

703 :デフォルトの名無しさん:2015/02/10(火) 13:36:23.66 ID:qAZJcue+
直線を走る速度ならCの方が速いけど
ゴールまでの近道を見付けるのがLispの方が速くて
そこが勝因になることがあるってこと

704 :デフォルトの名無しさん:2015/02/10(火) 13:51:08.94 ID:tJWV0Msc
体育系のCに頭脳派のLispだからな

705 :デフォルトの名無しさん:2015/02/10(火) 14:23:55.99 ID:Unjui7d0
勝利おめでとうw

706 :デフォルトの名無しさん:2015/02/10(火) 17:59:23.16 ID:pF/aVswz
>>699
発想・設計から保守まで含めた速度で考えればLispでも何とかCに対抗できるはず

707 :デフォルトの名無しさん:2015/02/10(火) 18:00:58.30 ID:pF/aVswz
>>704
断言するが、Cの方が頭を使う
実務的には、5月に、昔作ったCのコードを保守できる人がうちの会社から消える

708 :デフォルトの名無しさん:2015/02/10(火) 19:45:05.28 ID:fy1hPi3U
頭を使わされる。では?

709 :デフォルトの名無しさん:2015/02/10(火) 19:50:49.00 ID:Ae/h3GWY
もっと言えばプログラムの本質でないところに頭を使わさせられる

710 :デフォルトの名無しさん:2015/02/10(火) 20:05:07.35 ID:tJWV0Msc
>>707
それは頭を使うのいみが違う

そのくらいわからんのか

711 :デフォルトの名無しさん:2015/02/12(木) 13:30:34.03 ID:H2BvcWHQ
うちの会社は面接でいきなりLispの話するやつ採用しないから

712 :デフォルトの名無しさん:2015/02/12(木) 13:55:25.12 ID:/vHxcq1E
魔除けになってお互いにWin-Winじゃん

713 :デフォルトの名無しさん:2015/02/12(木) 14:10:50.33 ID:y72uNgid
(;´Д`)ノθ

714 :デフォルトの名無しさん:2015/02/12(木) 20:39:43.51 ID:nopYXecf
>>711
いきなりだったら何の話でもどこの会社でもダメだ
バカじゃねーの

715 :デフォルトの名無しさん:2015/02/12(木) 21:46:59.13 ID:+oiFZXuj
履歴書に書かないとな。
「リスプできます!」って。

716 :デフォルトの名無しさん:2015/02/12(木) 21:55:53.76 ID:DvTDGtdT
面接の前に、参考に自分で作ったlispのコードを送ったことならあるわ

717 :デフォルトの名無しさん:2015/02/12(木) 22:19:22.63 ID:+oiFZXuj
相手が読めなきゃしょうがないよね…相手によりけり。
で、採用されたんですか?

718 :デフォルトの名無しさん:2015/02/15(日) 11:11:00.17 ID:R3mGDpha
Lispの世界をこれから学ぼうと思ったら、SchemeとCommon Lispのどちらに入門すればいいの?

どっちも同じようなもん?

719 :デフォルトの名無しさん:2015/02/15(日) 12:13:34.14 ID:imHzIbsq
>>718
どっちも学べ
The little schemerと
Land od Lisp買っとけ

720 :718:2015/02/15(日) 13:01:52.23 ID:1MddSWAd
どっちもかぁ、そうしたいけど時間がないっす

wiki見るとschemeはミニマムを目指してるみたく書いてあったから、先にschemeトライするのが正解に思えてきた。
ま、入口で悩んでる時間ももったいないですしね

721 :デフォルトの名無しさん:2015/02/15(日) 13:03:54.46 ID:imHzIbsq
>>720
用途によるな
将来的にLispを使うのならCL
継続などを学びたいだけならscheme

722 :デフォルトの名無しさん:2015/02/15(日) 14:01:01.91 ID:3OrubE+s
Lisp系の最大の強みはマクロだから、CLを学ぶのがいいと思う。
Schemeはまともなマクロを標準化できてない。

723 :デフォルトの名無しさん:2015/02/15(日) 14:02:06.36 ID:zF3eUWac
schemeやるならhaskellの方がいいような気がする

724 :デフォルトの名無しさん:2015/02/15(日) 14:11:13.02 ID:UOWPKbNm
>>718
Schemeで。
相性悪かったらこの世界とはおさらばで。

725 :デフォルトの名無しさん:2015/02/15(日) 14:12:55.86 ID:XmVE8RCz
じゃあ、Little Schemerと鉛筆で。

726 :718:2015/02/15(日) 14:19:57.93 ID:1MddSWAd
ちょっと離れてる間にコメたくさん!
さわりだけならすぐ一回りできるらしいし、schemeの処理系入れたんで弄ってみます

>>722氏のコメントは頭に置いときます。アドバイスありがとうございます。

727 :デフォルトの名無しさん:2015/02/15(日) 14:27:58.38 ID:pH70D4cQ
>>725
Theが抜けてます

728 :デフォルトの名無しさん:2015/02/15(日) 14:33:56.00 ID:u2JNOHd3
>>726
>>722なんか意味ないよ
とりあえず初心者が学ぶ段階では

俺もThe Little Schemerをすすめるな
1章から7章までは多分を簡単
「バカにしてるのか?」と思うかもしれない。が、しかし……

ま、8と9章で向き不向きがわかるかな
そこで挫折する人は多いだろな、この前もここで「諦めた」って人いたし。
最後はインタープリターつくるんだが、前章までわかってりゃ楽ちんかな
ま、頑張ってくれ
俺もThe Little Schemerやったよ
あ、特徴をひとつ。セルには触れない。あくまで記号処理の枠でやる。

729 :デフォルトの名無しさん:2015/02/15(日) 15:10:49.06 ID:Qwk5nQv8
>>728
9章のお題YCをもういちどTheLittleSchemerの最初から追っていけば今度こそ理解できるかな‥これから本屋だ

730 :デフォルトの名無しさん:2015/02/15(日) 15:30:33.73 ID:zLqQDneS
マクロを触らないならlispやる意味無いよ
専用の構文がある言語の方が良い

731 :デフォルトの名無しさん:2015/02/15(日) 16:02:18.10 ID:sccCWRTy
木構造ならlispでしょ

732 :デフォルトの名無しさん:2015/02/15(日) 16:09:03.92 ID:zLqQDneS
木構造を弄ってlispのコードを生成するとかね
関数型プログラミングがしたいだけならlispよりもっと向いてる言語がある
the little schemerは読む価値あるけど

733 :デフォルトの名無しさん:2015/02/15(日) 16:46:54.32 ID:UOWPKbNm
マクロは後回しで良い。

734 :デフォルトの名無しさん:2015/02/15(日) 17:16:19.34 ID:YH8/c8HQ
Lispなんて何やっても役に立たないから
好きなのやれ

735 :デフォルトの名無しさん:2015/02/15(日) 17:22:29.65 ID:sccCWRTy
「役に立つ」の意味が「企業の製品として稼働している」なら、役に立つのは圧倒的にアセンブラとCだしな…
Webアプリや携帯はjavaが多いけど、Webサーバまでみるとlispがいまだに幅を利かせているという現実

736 :デフォルトの名無しさん:2015/02/15(日) 17:26:39.49 ID:+YnK72sf
あえてClojureからとか

737 :デフォルトの名無しさん:2015/02/15(日) 19:52:55.35 ID:00orNeCZ
WebでLispとか
ごく少数の過去の遺物ですよ

738 :718:2015/02/15(日) 20:50:16.81 ID:5ldiypqZ
>>728
丁寧に教えてくれて嬉しいです。little schemerはkindle版ないのが残念だけど、本屋で覗いて見ますわ。
実は上に書き込んでから「独習 Scheme 三週間 」ってサイトを見つけてのめりこんでましたよ。

重ね重ね、皆さんレスありがとうございます

739 :デフォルトの名無しさん:2015/02/15(日) 22:14:15.77 ID:CdX1KqlB
>>737
allegroserve に Lispache、最近は >>692 かな

740 :デフォルトの名無しさん:2015/02/15(日) 22:46:31.69 ID:TPGLiVec
正気な人間はそんなもん使わないだろ

741 :デフォルトの名無しさん:2015/02/15(日) 23:27:20.71 ID:SrUN3Dg4
役に立つ・立たないにこれだけこだわるのは
正気じゃない役立たず

742 :デフォルトの名無しさん:2015/02/15(日) 23:32:11.13 ID:UOWPKbNm
プログラマはみんなプログラミングに狂ってるはず。

743 :デフォルトの名無しさん:2015/02/15(日) 23:56:20.13 ID:gBYECTA5
>>729
わかると思うよ
自分自身へのポインターを確保するために引数をひとつとって無名再帰させる話でしょ?
それがわかば適用順Yコンビネーターは割りと単純は変形
要するに適用をラムダ化して引数化していく

躓いたところはここで聞けば?
わかる範囲でこたえる

744 :デフォルトの名無しさん:2015/02/16(月) 00:26:54.10 ID:oJNvAL6Z
>>743
thx

745 :デフォルトの名無しさん:2015/02/16(月) 00:41:35.25 ID:XOZRxjEF
Lispマシンとかアプリケーションが落ちても編集途中のデータが生きてるから
アプリ立ち上げなおせば作業再開できるとかオーパーツレベルの過去の遺物
だよな。。。

746 :デフォルトの名無しさん:2015/02/16(月) 01:00:16.09 ID:vEgulV7R
>>720
Scheme がミニマムを目指してるってのはよくある誤解。
議論を徹底するので無闇に膨れたりはしないけど、議論した結果として機能を増やすことになれば増やす。
議論でまとまらなければ未定義になるので結果的に未定義だらけで今のところ仕様は小さいってだけ。

未定義の部分はそれぞれの処理系がそれぞれの作者の考え方で作るから、
そういうところも含めれば実態としてはそんなに小さくもない。

747 :デフォルトの名無しさん:2015/02/16(月) 08:43:44.54 ID:v1v01xXU
>>718
教養としてSchemeは学んでもよいとは思う。
けど、ある程度理解したら新しくてメジャーな言語にした方がいい。
経済的な問題もある。

748 :デフォルトの名無しさん:2015/02/16(月) 09:20:43.96 ID:SUgqenX3
Schemeに馴れた頭でCLみると
「確かにそうできるけど、なんかイケないんだぁ。先生、この子、なんかズルしてます!!」
って感じぃ
1. nilが意味し得るもの
2. (car nil), (cdr nil)がエラーにならないこと

ま、それに慣れてるとSchemeって
「おまえ、どんだけ融通効かないの?記述が冗長になるだろうが。これだから模範性は!!」
って感じぃ

749 :デフォルトの名無しさん:2015/02/16(月) 09:40:02.74 ID:+79ZJbql
>>748
t先生とa君かよ

750 :デフォルトの名無しさん:2015/02/16(月) 10:48:05.30 ID:XP4TAyIw
>>745
> オーパーツレベルの過去の遺物

オーパーツの意味わかってないだろっwww

751 :デフォルトの名無しさん:2015/02/16(月) 11:08:20.53 ID:fGaWs66b
オーパーツ的な何かであるというのは間違ってはないんじゃないか

752 :デフォルトの名無しさん:2015/02/16(月) 12:16:59.36 ID:XOZRxjEF
>>750
オーパーツその殆どが現在の技術で作られた偽物って意味の方かw

753 :デフォルトの名無しさん:2015/02/16(月) 12:25:36.01 ID:/7ZzO7v+
アプリケーションが落ちても編集途中のデータが生きてるというのはある意味素朴な仕組みということであり、
それを紹介していた人もそのように紹介していると思ったがね。シングルユーザー的利用には利点ありということだと

754 :デフォルトの名無しさん:2015/02/16(月) 13:34:06.42 ID:221hWi7I
>>745
すまん。あえて使い方が間違っているとすれば「過去の遺物」のほうだった。
もちろん「(過去の)遺物」のうち特殊なものが「オーパーツ」なので一概に間違いではないのだけれども
IT の文脈において「過去の遺物」って、たいがいネガティブな意味合いでの使い方
http://ejje.weblio.jp/sentence/content/%E9%81%8E%E5%8E%BB%E3%81%AE%E9%81%BA%E7%89%A9?catId=computer
が一般的だから、同じく IT の文脈における「オーパーツレベル」「オーパーツ的」の持つ
「そんなのが当時すでにあったのか!」というポジティブな印象と矛盾してたのでつい反応してしまった。
反省している。

755 :デフォルトの名無しさん:2015/02/16(月) 13:45:00.90 ID:xpXsFOjU
スクリプトとして使うのに#!だけで足りるのと#!!#のとはどっちかにしろと思う

756 :デフォルトの名無しさん:2015/02/17(火) 15:42:16.05 ID:uEz4EDP+
>>748
そもそもLisp族は他言語の良さげな機能を容易に吸収できるようにできているのだから、清濁合わせ飲む度量が必要なんだよな。

757 :デフォルトの名無しさん:2015/02/17(火) 15:43:25.57 ID:skl6PNp3
>>756
意味わかりませーん
僕ってネトウヨじゃないからぁ

758 :デフォルトの名無しさん:2015/02/17(火) 15:56:22.28 ID:qY51Xt/N
>>756
SchemeはLISPじゃないからな
>>757
障害者

759 :デフォルトの名無しさん:2015/02/17(火) 16:17:05.68 ID:wG+R2OX6
Scheme is a statically scoped and properly tail recursive dialect of the Lisp programming language.
                       -- Revised7 Report on the Algorithmic Language Scheme

760 :デフォルトの名無しさん:2015/02/17(火) 17:48:11.41 ID:8r34wW9h
Schemeで(car '()) -> '() な処理は簡単に実現できるしCommonLispで (car '()) をエラーにすることも簡単なので議論する価値がない

761 :デフォルトの名無しさん:2015/02/17(火) 17:53:33.92 ID:NYMkftRe
>>758
あたまわるすぎぃ!!

762 :デフォルトの名無しさん:2015/02/17(火) 17:54:26.41 ID:NYMkftRe
>>760
ば、ばかだぁぁぁぁぁ!!

763 :デフォルトの名無しさん:2015/02/17(火) 17:55:28.42 ID:TUaKLPcf
>>760
(car '())はnilがいいなぁ

764 :デフォルトの名無しさん:2015/02/17(火) 18:29:31.00 ID:wG+R2OX6
こんな感じか。

(import (except (scheme base) car)
(scheme write)
(prefix (only (scheme base) car) r7rs:))

(define (car p)
(if (null? p) '() (r7rs:car p)))

765 :デフォルトの名無しさん:2015/02/17(火) 18:34:17.38 ID:8r34wW9h
>>763
(car '()) -> '()はバグの温床だと個人的には思うが (fifth '(1)) -> '() のような挙動が便利というのも分からんでもない。使い所によるな。

766 :デフォルトの名無しさん:2015/02/17(火) 19:19:48.66 ID:aFjf+me9
c*rがnilでnilを返すのがバグになるってよく言われるけど自分はまだ遭遇したこと無いな

767 :デフォルトの名無しさん:2015/02/17(火) 19:22:20.72 ID:qG8UOtzo
(f*ck '() '()) -> (())

768 :デフォルトの名無しさん:2015/02/17(火) 20:29:55.85 ID:8OD0gx62
個人的帰納主義かよ

769 :デフォルトの名無しさん:2015/02/17(火) 21:38:30.14 ID:8r34wW9h
>>766
そういう類のバグだからそうだろうな

770 :デフォルトの名無しさん:2015/02/17(火) 22:06:26.85 ID:QJUfJhiA
乗り遅れたかもしれんが、
Lispでなにを選べばいいかわからんというなら
覚えるものが少ないSchemeの処理系がよくないか?

やっぱりなんだかんだ言ってSchemeはminimalでしょ

んで、日本で一番勢力のでかいGauche

CommonLispはSchemeが使えれば使えるでしょ。
本質的に変わるところはない

771 :デフォルトの名無しさん:2015/02/17(火) 22:16:55.02 ID:zSkbbRcp
gaucheなんてマイナーなものよりsbclの方がいいよ
quicklispあるし

772 :デフォルトの名無しさん:2015/02/17(火) 22:21:55.57 ID:x9xb7pmC
時代はCCL

773 :デフォルトの名無しさん:2015/02/17(火) 22:30:44.54 ID:TUaKLPcf
>>770
今だとclojureが一番使い心地は良い
つか学習ならMinmalなLisp1を自前で実装してとかじゃないの?

774 :デフォルトの名無しさん:2015/02/17(火) 22:37:14.80 ID:LyM4otn4
lispにもlighttableみたいなエディタほしいです

775 :デフォルトの名無しさん:2015/02/17(火) 22:42:21.40 ID:TUaKLPcf
>>774
schemeだと一部しか使えないけどemacs+swankでいいじゃない

776 :770:2015/02/17(火) 22:52:10.12 ID:QJUfJhiA
>>771
便利だよねぇ。
アプリがインストール不可な職場のPCに入れてる。

他の言語のも欲しいがEmacsべったりなのはCommonLispだけなのか。
せめてSchemeのが欲しいよう。
(PortablePythonは入れてる)

>>773
Clojureどうなの?
末尾呼び出しの最適化がだめなのと、
List至上主義ではなくArrayとか使えとか読んでちょっと敬遠気味。
(うろおぼえなのですまん)

Swingが使える言語はすごい期待できるんだけどなぁ。

Scalaより関数型言語でしょ ?

777 :デフォルトの名無しさん:2015/02/17(火) 22:54:34.17 ID:x9xb7pmC
SBCLはWindowsでスレッドがサポートされたら使いたい

778 :770:2015/02/17(火) 23:03:40.13 ID:QJUfJhiA
Lisp Schemeだけでなくてすまんが、
Windows, MacOSX, FreeBSDでポータブルな
グラフィックライブラリと関数型言語の組み合わせを探してる。

OCaml + LablGTK
Haskell + wxHaskell
はけっこー環境構築が大変な気が

Clojure or Scala + Swingはなんとなく気が引ける。
末尾呼び出しやList至上主義はやめるべき ?

最近ではWindowsだけでいいよってなことで
F# + .Net
でいいやと思っています。

779 :デフォルトの名無しさん:2015/02/17(火) 23:22:47.75 ID:x9xb7pmC
>>778
CCL and GTK

780 :デフォルトの名無しさん:2015/02/17(火) 23:23:01.55 ID:3IDX5J7l
clojure良い言語だしtcoなくてもloop/recurあるしleiningen便利だし
ただエラーがjavaのそれなんで初心者には厳しそうな気がする

781 :デフォルトの名無しさん:2015/02/17(火) 23:24:29.76 ID:WE2OvojJ
clojureは、安心して再帰最適化に頼れないのが難点

782 :デフォルトの名無しさん:2015/02/18(水) 00:29:34.01 ID:IIzZpLEY
HaskellはGtk2hsがコンパクトだった記憶

Clojureはエラーメッセージがほとんど意味を成してないのが難点

783 :デフォルトの名無しさん:2015/02/18(水) 13:19:38.92 ID:f8p6ba1i
日本語で責めてるのにスワヒリ語であえぐ女みたいだな
イミワカラン

784 :デフォルトの名無しさん:2015/02/18(水) 18:31:54.68 ID:fV0fV7QU
Clojureのシーケンスは実際に何で実装されてるかは開けてのお楽しみという言いしれぬ気持ち悪さがある。

>>778
CommonQtもいいよ。今はGTKよりもQtの方がポータブルなんだな。
LGPL化されたことだし。

785 :デフォルトの名無しさん:2015/02/18(水) 18:34:34.02 ID:lWf4Tu5L
abclという選択もある

786 :デフォルトの名無しさん:2015/02/19(木) 02:40:01.19 ID:mO2vvUs4
>>784
hashmap食わせてもシーケンスで[k v]受け取るとかのことかな?

今自分が感じるClojureの最大の魅力はリテラル表現が最初から多彩な事だったりするんだけどああいうのschemeとかclとかだとreader macroになっちゃうからめんどくさいんだよな
;; 逆にclojureはreader macroの自由度が無いんだけどね

787 :デフォルトの名無しさん:2015/02/19(木) 15:24:06.43 ID:oBz61BX8
Lisperは時代遅れのゴミカス
早く死滅しろ

788 :デフォルトの名無しさん:2015/02/19(木) 15:34:30.15 ID:HYj0+sYB
みんな3月になったらどこ行くの?

789 :デフォルトの名無しさん:2015/02/19(木) 16:16:23.69 ID:4dC5fmDk
Reddit以外無くね

790 :デフォルトの名無しさん:2015/02/19(木) 21:28:43.24 ID:+RCnoNWU
navi2chスレはopen2chとかnext2chとか行くかも。
navi2chで書き込めるから。

791 :デフォルトの名無しさん:2015/02/19(木) 22:38:36.52 ID:lYvP8ayQ
redditなんてまじかとおもったが移民してるとこもあるんだな
http://www.reddit.com/r/newsokur/
やっぱopen2chとかじゃね

792 :デフォルトの名無しさん:2015/02/20(金) 03:42:47.18 ID:LNoPfWUW
新月をCommon Lispで実装しようという猛者はいないのか

793 :デフォルトの名無しさん:2015/02/20(金) 03:52:21.37 ID:LNoPfWUW
>>786
( ) と [ ] と { } が入り交じるコードはマクロ書きにくそうというか、プログラムをデータとして見たときに扱いづらそうなんだよな。

794 :デフォルトの名無しさん:2015/02/20(金) 17:22:19.89 ID:I0m4Nban
[] {} は, "" みたいなもんだからマクロで混ざったりしないだろ.
それとも文字列を'(#\h #\o #\g #\e)と書いた方が良いって話か.

795 :デフォルトの名無しさん:2015/02/20(金) 17:26:35.01 ID:uxCAuLIo
文字列の中は文字しか入らないからいいけど
[] {}の中にはS式が入るからややこしくなるってことだろ
clojureしらんけど

796 :デフォルトの名無しさん:2015/02/20(金) 18:05:05.82 ID:Of1gimuU
>>793
え?マクロ書くときにリーダマクロでの評価とか気にするのならともかくマクロでList,Vector,Hashとかを表現として区別することなんてあるの?
渡されたリストの要素が何かって知る必要はあるけどリテラル表現とか気にしないよね?

797 :デフォルトの名無しさん:2015/02/20(金) 20:07:53.43 ID:LNoPfWUW
>>796
(defmacro my-let [[var val] & body]
`((fn [~var] ~@body) ~val))

(defmacro my-let2 [[var val] & body]
(list (cons 'fn (cons (vector var) body)) val))

逆クォートじゃなくてリスト操作でプログラムを組み立てたいときとか

798 :デフォルトの名無しさん:2015/02/20(金) 22:14:19.12 ID:I0m4Nban
もう少し良い例はないのか. もはや自説を通したいだけに見えるが.
clojureに関しては
(['a] 0) -> a
({'a 0} 'a) -> 0
なところがマクロ定義で式操作場合でも都合良いなとしか思えんな.

799 :デフォルトの名無しさん:2015/02/21(土) 20:39:20.87 ID:bHxWybNH
>>787
心配するな。いずれLisp系は絶滅する。

800 :デフォルトの名無しさん:2015/02/21(土) 21:31:43.58 ID:SweHsfSk
EmacsとかD-Waveとか
まあEmacsはいい加減どうにかすべきだとは思う

801 :デフォルトの名無しさん:2015/02/21(土) 21:36:32.23 ID:qCqW+14K
そこに颯爽と xyzzy が

802 :デフォルトの名無しさん:2015/02/21(土) 21:43:28.33 ID:8m4o3u2U
勉強始めたばっかなのにそれはないよ

803 :デフォルトの名無しさん:2015/02/21(土) 22:03:23.29 ID:bst4VCEg
>>802
安心するとよい、コンピュータのパラダイムが変わらない限りLispは滅びることはない。
絶滅しても同じ発想に至ればまた生まれる。(つか絶滅するまえに常になんかにょきにょき生えてくるし)

804 :デフォルトの名無しさん:2015/02/21(土) 22:13:43.80 ID:38FxidpD
畳の下から生えるキノコみたいな言語だな。
COBOLやJavaのように産業界を支える日は来るのだろうか。

805 :デフォルトの名無しさん:2015/02/21(土) 22:15:43.32 ID:bst4VCEg
>>804
産業界の床下開けるとわかるんじゃねぇの?

806 :デフォルトの名無しさん:2015/02/21(土) 22:19:36.77 ID:hnlhMh5B
まともな人はみんなredditに移ったのかね

807 :デフォルトの名無しさん:2015/02/21(土) 23:06:34.38 ID:z4IdcAcZ
ASTを直接書く、ってアイデアは偉大だ。だけどそれ以上が出てこないのはlispの停滞を意味している。
このままlispが無くなることはないけど、進歩はあるんだろうか?

808 :デフォルトの名無しさん:2015/02/22(日) 00:39:12.43 ID:ER05y4VT
>>807
AST (というか厳密に言えばそれに近しいリストだが) を直接書くのをやめたら、それ LISP って名乗れると思う?
LISP インスパイアな新しい言語じゃね?
そういう言語がどんどん現れてもいいけど、そういうのも LISP に含むってのは無理がある。

809 :デフォルトの名無しさん:2015/02/22(日) 00:39:17.03 ID:EahD+U6W
>>801
うーん
遅いしぃ

810 :デフォルトの名無しさん:2015/02/22(日) 00:52:19.45 ID:6rRicQBc
(´・ω・`)
M式…

811 :デフォルトの名無しさん:2015/02/23(月) 16:18:29.04 ID:BmUIEc7D
最近OCaml触ってみたんだけど使い心地がSchemeに似ていて
M式が有れば、こういう感じだったのかなって思った

812 :デフォルトの名無しさん:2015/02/23(月) 19:56:10.19 ID:jznlhI3V
>>811
SMLの方がもっとSchemeっぽいよ。

813 :デフォルトの名無しさん:2015/02/23(月) 20:02:21.97 ID:jznlhI3V
>>811
M式はもっとちがうな。アレンの「Lispの構造」
を読んでみるといい。

814 :デフォルトの名無しさん:2015/02/24(火) 00:37:05.93 ID:eLXIVH4f
昔はマクロ書きまくってたけど最近はバグの温床になりやすいから本当に必要な時か特定用途のマイクロ言語を入れる時しか書かなくなった
最近は gauche の pa$ や cut や $ .$ なんかを多用して関数合成で書くことにしてる
こっちのがモジュラリティ高くなる

815 :デフォルトの名無しさん:2015/02/24(火) 00:55:07.12 ID:wj4iFY4s
デバッグしにくいってのはマクロの大きな課題だよね。
マクロ用のデバッガとかが必要なんだろうけど。

816 :デフォルトの名無しさん:2015/02/24(火) 04:35:19.18 ID:WA96UrQV
>>815
展開した先でエラーが起こったときに元のマクロを特定するための情報を残しておけばできるのかな。

817 :デフォルトの名無しさん:2015/02/24(火) 06:30:12.28 ID:xl3zgpOz
カッコが重なった見づらさといったらない
大中小カッコ自由に使えるようにならんの?

818 :デフォルトの名無しさん:2015/02/24(火) 10:15:00.82 ID:MjCxRVrn
特定のクラスとそのサブクラスについて、make-instanceの処理の前になんかしたい場合ってどんな方法がありますか?

(defmethod :around make-instance ((class 'standard-class) &rest initargs)
(if (subtypep class particular-class)
...
(call-next-method)))

こんなんしか思いつかないんですが、いろいろよくない感じがします

819 :デフォルトの名無しさん:2015/02/24(火) 10:16:30.82 ID:MjCxRVrn
あ、:around変なとこに書いてるけど、closでの話です、すみません

820 :デフォルトの名無しさん:2015/02/24(火) 12:01:23.83 ID:8m2gPI9o
>>817
>カッコが重なった見づらさといったらない

適切な字下げと慣れの問題では?
ASTに近いものを直に見せられることからくる見づらさは括弧の問題ではないし。

>大中小カッコ自由に使えるようにならんの?

lexerレベルで同じ括弧トークンとして扱うだけ。

821 :デフォルトの名無しさん:2015/02/24(火) 21:55:34.07 ID:pJ3tHQCB
>>814
まあ用意されてるマクロ使う方が安心な気はするよな。

822 :デフォルトの名無しさん:2015/02/24(火) 22:01:02.66 ID:et7v2++T
ま〜、ロクなことにはならんよね
マクロだけに

823 :デフォルトの名無しさん:2015/02/24(火) 22:03:46.41 ID:pJ3tHQCB
Gauche や Racket くらいになると欲しいなと思ったものはだいたい揃ってるから、
実用的には良くてもなんだかつまらないかも。

824 :デフォルトの名無しさん:2015/02/24(火) 23:04:17.75 ID:IpitA/Z1
LISP勉強はじめました。
ただ非常にもやもやしていることがあります。
LISPerってやっぱり大学でちゃんとコンピュータサイエンスを学んだ人が使っているイメージですが
自分は専門学生です。
後ろめたいというよりは、他のLISPerに笑われるのが怖いです。
自分のような低学歴がLISPを学ぶことは問題ですか?

825 :デフォルトの名無しさん:2015/02/24(火) 23:06:17.75 ID:f1Zj88nD
そんなの聞いたことないわ

826 :デフォルトの名無しさん:2015/02/24(火) 23:09:36.90 ID:f1Zj88nD
> LISP勉強はじめました。

ここだけで小便漏らして喜ぶ

827 :デフォルトの名無しさん:2015/02/24(火) 23:15:22.26 ID:/uBniPhk
>>824
昔はすごいLisperがいたけど。最近は大したことはない。
ざっくり学んだら新しいタイプの「言語に移った方がよいと思う。

828 :デフォルトの名無しさん:2015/02/24(火) 23:26:00.06 ID:/uBniPhk
>>824
コンピューターサイエンスの人たちはHaskellやML系に移っていると思う。
PythonやRubyにも流出していると思う。

829 :デフォルトの名無しさん:2015/02/24(火) 23:26:44.33 ID:IpitA/Z1
>>827
いま自分は、Perl, Java, C, C++がつかえます。
LISPは、将来仕事で使うためではなく
自分で何かを作るために学ぶはじめました。
本を読み始めて、LISPer(=ハッカー)とはこういうものだ、
とういうような書かれていることについて、
自分は全くそういうものには程遠く、
そのギャップ?(自分でもよく分かっていない)に苦しんでいます。
問題は言語そのものではなく文化や哲学、思想などです。たぶん

830 :デフォルトの名無しさん:2015/02/24(火) 23:30:07.04 ID:IpitA/Z1
数学も満足にできない自分が情けない

831 :デフォルトの名無しさん:2015/02/24(火) 23:30:56.36 ID:et7v2++T
何も言わずにガウスの消去法を実装しなさい
実装できればLISPerを名乗り、このスレに参加しなさい

832 :デフォルトの名無しさん:2015/02/25(水) 00:01:33.21 ID:hXnhoSaa
ふふ、かく言う私も低学歴でね…(´・ω・`)

833 :デフォルトの名無しさん:2015/02/25(水) 00:35:56.63 ID:YEk/rErT
>>829
とりあえず"SICP"を読んでみるといいよ

ttp://mitpress.mit.edu/sicp/
ttp://sicp.iijlab.net/

あとハッカーの文化や哲学、思想については
"how to become a hacker"を読むといいかもね

ttp://www.catb.org/esr/faqs/hacker-howto.html
ttp://cruel.org/freeware/hacker.html

834 :デフォルトの名無しさん:2015/02/25(水) 02:06:20.37 ID:2SyF9y9E
自分で考えてきました。

SICPについてはもうすこしあとになりそうですがいずれ読みたいです。
how to become a hackerはいまから読みます。

みなさんありがとうございました。
はやくレスが来て助かりました。
みなさんのお蔭で前向きに考えることができました。

結論からいうとこれからも続けることにしました。
自分のやりたいことのためには自分の使いたい言語が必要です。
大卒にも笑われない一人前になりたいです。
では、ガウスの消去法を張り付けるまでROMになります。

835 :デフォルトの名無しさん:2015/02/25(水) 05:10:57.07 ID:NC08Jsw4
>>818
stackoverflowで質問したら?
ここは思想とか自転車置き場の議論ばかりなので処理系に具体的な質問に返事はないよ.

色々良くないとか書かれても,察するのが面倒なので具体的に書いて欲しい.
副作用だけで良いなら:before,なんやかやするなら:aroundで良いんじゃね?
(defmethod make-instance :before ((class 特定のクラス) &rest initargs))
何が駄目なの? subtypep 使ってる意味が分からんけど.

836 :デフォルトの名無しさん:2015/02/25(水) 07:31:20.02 ID:L9ZJ97nO
>>835
質問の仕方が悪くてすみません
ここでの特定のクラスというのはメタクラスのインスタンスとしてのクラス(つまり通常の文脈でのクラス)なので、
(defmethod make-instance :before ((class 特定のクラス) &rest initargs)
では引っかからないです

>>818で個人的に問題だと感じているのは、基本的にすべてのクラスはstandard-classのインスタンスとして作られてるので、

1. すべてのインスタンス生成時の処理に割り込んでしまうことと(大体6倍くらい遅くなる)、
2. 他にmake-instance :aroundを書き換えるようなライブラリなり何かと競合する点

だったのですが、とりあえず1.は適当なメタクラスを用意してcloser-mopでdefclassに介入することで解決できたので大丈夫です
今後はstackoverflowを検討することにします

837 :デフォルトの名無しさん:2015/02/25(水) 07:34:41.96 ID:L9ZJ97nO
> すべてのクラスはstandard-classの...

すべてのクラスは間違いです
普段使うようなクラスと読み替えてください、すんません

838 :デフォルトの名無しさん:2015/02/25(水) 07:59:51.12 ID:NC08Jsw4
>>836
> とりあえず1.は適当なメタクラスを用意して
とりあえず,というかその方法が定石な気がするけれど.
2の競合については別途メタクラスを用意しているのであまり心配する必要もないと思うが.
逆にstandard-classと同じように書けないのが面倒だがマクロでごにょごにょするのが定番.
とりあえず,mopについて答えられる人間はここにはいない.
stackoverflowには居る(日本版でも可).

839 :デフォルトの名無しさん:2015/02/25(水) 08:09:11.12 ID:L9ZJ97nO
>>838
metaclassでやるとdefclass時にいちいち指定しないといけないのが嫌だったので、>>818みたいなことになってました
c2mop:ensure-class-using-classをいじれば

> 逆にstandard-classと同じように書け

るようになったので、今度はこの部分の競合がちょっと心配ではあります
stackoverflowはいいところそうなのでそのうち移ろうと思います
どうもありがとうございました

840 :デフォルトの名無しさん:2015/02/25(水) 21:42:41.35 ID:bWu+8X+U
the little schemer が届いた、gauche をインストールした、訳者文、序文、はじめにを読んだ
ガイドラインによれば「急いでこの本を読むな」ということだし、疲れたので続きは明日‥

841 :デフォルトの名無しさん:2015/02/26(木) 04:10:00.88 ID:SvY4APuc
redditに次スレが立ったようです
ttps://www.reddit.com/r/lisp_ja/comments/2x4v7k/lisp_scheme_part_40r/

842 :デフォルトの名無しさん:2015/02/26(木) 21:34:58.80 ID:5w8IBT4L
>>840
おーい、「明日」が終わるぞぉ

843 :デフォルトの名無しさん:2015/02/26(木) 21:41:47.24 ID:xT0bbyJa
明日は明日です

844 :デフォルトの名無しさん:2015/02/26(木) 21:44:30.37 ID:qGJD7aR8
バカはレス禁止ね

845 :デフォルトの名無しさん:2015/02/26(木) 22:00:20.49 ID:WnrsjYVG
昨日は gauche のインストールで疲れて寝た
今日は第二章の途中、lat? のインプリメントを読んだ
cond の括弧の使い方とか混乱する、というか括弧に気をつかっていないが、それでいいのだろうか?

846 :デフォルトの名無しさん:2015/02/26(木) 22:26:53.36 ID:D8nkDIff
おにぎりの人ありがとー

847 :デフォルトの名無しさん:2015/02/28(土) 14:38:11.56 ID:G/1DnfoK
型つきLispで一番良いのってどれなのでしょうか
typed racketが一番将来性ありそうだけど妙なバグがまだある
shenは機能も使えるライブラリも少なすぎる

848 :デフォルトの名無しさん:2015/02/28(土) 15:41:40.25 ID:03dHKIQ/
Common Lisp

849 :デフォルトの名無しさん:2015/02/28(土) 19:05:31.82 ID:9uiEaYWe
>>840
gaucheって学習用じゃないからまともなデバッグ機能はないぞ。
トレースさえない。Racketの方がいいんじゃないか?

850 :デフォルトの名無しさん:2015/02/28(土) 20:30:29.68 ID:+B6Ad1hH
たかがThe Little Schemerやるのにデバッグ機能などまるで不要

デバッグ機能とかけてThe Little Schemerと解くと「たかが」となるのであって
The Little Schemerは良い本だ
続編のThe seasoned schemerも薦める

851 :デフォルトの名無しさん:2015/02/28(土) 21:10:09.84 ID:WGZr43/X
>>849
アドバイス感謝、racket のチュートリアルで赤黒縞々を書いて楽しんでいた、gauche にトレースはあった気がする、ダンプみたいなのが延々出てくるやつだったかな、が、ともかく忘れた
でも、実体はよくわからないが親切そうなので、当分racketでやってみる
racket チュートリアル半分で疲れたので、続きは明日‥

852 :デフォルトの名無しさん:2015/02/28(土) 22:13:24.36 ID:jTo3w2Q6
little schemerこそ黒板とチョークか、紙と鉛筆で読めるほんじゃまいか。

853 :デフォルトの名無しさん:2015/03/01(日) 07:37:27.10 ID:LlN1UCfi
Racket は大分気の利いたデバッグ機能が付いてるよなあ

854 :デフォルトの名無しさん:2015/03/01(日) 08:36:34.95 ID:Us1gnFjP
>>851
それとatom?は標準手続きに無いことに気づかずはまりやすい。
冒頭に説明があるが目立たないので注意が必要。
再帰を理解できたらもっと一般的なコンピューターサイエンスの本を
あたったらいいと思うよ。

855 :デフォルトの名無しさん:2015/03/01(日) 09:02:36.19 ID:Us1gnFjP
>>851
最近になってRubyで説明されたやさしいコンピューターサイエンスの本が
でていたと思う。

856 :デフォルトの名無しさん:2015/03/01(日) 12:10:02.64 ID:NAqrB2+0
                                
;;;;;;;;;;;ヽ         _,, -ー-、  ,r
;;;;;;;;;;;;;;;|       ,,r';´;;;;、ミミミミミ∨;;_;;;;;;;;;;;;;;;;;`ヽ,
;;;;;;;;;;;;;;;;|    /;;;;;;;;;;;_、、-''´ニニ ,__ `ヽ;;;;;;;;;;;;;/
;;;;;;;;;;;;;;;;;|  ./;;;;;;;;;/_, -''´::::;:;::::´ ̄`''' ';;;;;;;;/      / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
;;;;;;;;;;;;;;;;;;|/;;;;;;;;;;;/ ´._::::::::::::::::::,-、  ':;;;;/     /  
;;;;;;;;;;;;;;;;;;|\;;;;;;;;;;|  ‘ー''´ ,   、 ̄´  V、    <     ハァ?  意味わかんねえよ
;;;;;;;;;;;;;;;;;;|  \;;;;|      ,( ● ●)、    nヽ     \   
;;;;;;;;;;;;;;;;;|   .>y     ,'      ',   l゙) }      \_________________
;;;;;;;;;;;;;;;;|   l゙ n    l  _,,.--、, i    |、ノ
;;;;;;;;;;;;;;;|.   ', !〈    ',/r,二⌒ユヾ_   j
;;;;;;;;;;;;;;|    ヽ_∧    ''''´ ̄ ̄`   イ         __    (  丿
;;;;;;;;;;;;;|___,, -'''⌒ ヽv\       __,,ィ |        /,ハ    ) ノ   ドコマデクズヤネン
;;;;;;;;;;;;|ー- 、_      `ヽ`ヾ、ー''''´`´  ; j      r(ZZyZZZZZZ■
;;;;;;;;;;/   _,>、    `ヽ, `丁`l   ; √`-、   `ヽ `" //// 〉
;;;;;;;;;|   ´   `ー、    \|  ゝ、  ,〈  /       ゝ、,,_`´´ノ
;;;;;;;;ノ__       ィ´` 7ー、    ヽ\ノノ) ハ       ノ   /
;;;;;;/::::::`ー-、__   | ___,|  ヽ      `V/ '.,    /`ーァ ィソ
;;ノ:::::::::::::::::::::::`ー-Lユゝ,  `i          |   /   l//
:::::::::::::::::::::::::::::::::::::::::::::::::::ゝ,、、 l          |  ,r个 ー−イ
:::::::::::::::::::::::::::::::::::::::::::::::::::::lj |.|.l|          |. / U   j
:::::::::::::::::::::::::::::::::::::::::::::::::::::´ lj.リ            |ノ      |
.

  .

857 :デフォルトの名無しさん:2015/03/01(日) 18:27:37.28 ID:tiMnWTGz
>>855
http://www.oreilly.co.jp/books/9784873116976/

858 :デフォルトの名無しさん:2015/03/01(日) 18:38:02.66 ID:NAqrB2+0
SICPじゃあかんのかぁぁぁぁぁ!

859 :デフォルトの名無しさん:2015/03/01(日) 21:02:11.55 ID:N5IwhD3H
もう両方読めよ。
古いのは長い年月の淘汰を生き残ったんだから立派なもんだろうし、
新しいのは新しい知見が盛り込まれてるだろうし。

860 :デフォルトの名無しさん:2015/03/01(日) 22:11:09.83 ID:aBnqKp0d
>847
What is Gradual Typing: 漸進的型付けとは何か
http://qiita.com/t2y/items/0a604384e18db0944398

"オプションの型アノテーションを持つ言語には Common LISP, Dylan, Cecil, Visual Basic.NET, Bigloo Scheme, Strongtalk があります。"

なにやらCLとbiglooが入ってる。
そこで型推論やら型検査やらしてくれるのかはよく分からない。

861 :デフォルトの名無しさん:2015/03/01(日) 22:16:41.72 ID:aBnqKp0d
26. Bigloo A practical Scheme compiler User manual for version 4.0b
August 2013 -- Explicit typing
http://www-sop.inria.fr/mimosa/fp/Bigloo/doc/bigloo-27.html

862 :デフォルトの名無しさん:2015/03/01(日) 22:22:47.14 ID:rdPv98Ov
asm.jsも含まれるのかな?

863 :デフォルトの名無しさん:2015/03/01(日) 22:47:47.89 ID:aBnqKp0d
CMUCL User's Manual
Chapter 5 Advanced Compiler Use and Efficiency Hints
Type Inference
https://common-lisp.net/project/cmucl/doc/cmu-user/compiler-hint.html#toc154

asm.jsは、GC止めてunsafeに自前メモリ管理させて高速化するという技法だと思う。

864 :デフォルトの名無しさん:2015/03/01(日) 23:03:40.02 ID:rdPv98Ov
あれも一応型指定だよ。
型アノテーションが|0とかだけどw

865 :デフォルトの名無しさん:2015/03/01(日) 23:08:36.72 ID:00nc7/8R
型しばりアリのLisp族だとTyped Clojureが凄い好き
最適化の為に型指定もできるならCommonLispが好き

866 :デフォルトの名無しさん:2015/03/01(日) 23:10:16.20 ID:UZLeoZQm
学習用じゃないからデバッグ機能が貧弱なんじゃなく、単純にgaucheはまだ機能が足りないんだよ
開発リソースの問題だろうけど、どうにかならんかなぁ

867 :デフォルトの名無しさん:2015/03/02(月) 07:43:02.21 ID:7j/cedut
今後専ブラ組はどうするの?
俺はnext行こうかなと思ってる http://next2 ch.net/tech/ <- NGワードなので空白入れ
もう書き込めなくなりつつあるらしいが

868 :デフォルトの名無しさん:2015/03/02(月) 09:03:20.71 ID:U7sAEcak
Readdit併用
そもそも専ブラでも読み書きできるものはあるしな

869 :デフォルトの名無しさん:2015/03/02(月) 21:17:48.89 ID:EDxcjXkc
>>866
開発者にその気がないからでしょう。コンパイラ最適化には前向きだけど。
デバッグはプリントデバッグでいいだろうみたいな。
デバグ機能の貧弱さはかなり前から指摘されてるのにね。

870 :デフォルトの名無しさん:2015/03/03(火) 20:40:23.58 ID:wsPgJ5pW
実用主義だろうと学習用だろうとデバッグ機能はあるに越したことはないよ。
開発予定に入ってるし。
http://practical-scheme.net/gauche/devinfo-j.html

871 :デフォルトの名無しさん:2015/03/03(火) 21:24:58.84 ID:YZP0yr3o
?

872 :デフォルトの名無しさん:2015/03/03(火) 21:34:19.31 ID:Z0dSwOUy
RnRSってなんでデバッガを規格化しないん?

873 :デフォルトの名無しさん:2015/03/03(火) 21:46:03.53 ID:YZP0yr3o
抽象度が落ちるから

874 :デフォルトの名無しさん:2015/03/03(火) 21:47:32.44 ID:Xj1iXzPO
リスパーは自由の海でこそチンコそそり立つから

875 :デフォルトの名無しさん:2015/03/03(火) 21:48:24.89 ID:YZP0yr3o
俺がageてしまったばっかりにへんなのが来てしまってごめん

876 :デフォルトの名無しさん:2015/03/03(火) 21:49:31.73 ID:Xj1iXzPO
俺のそそり立つチンコ見てもそう言えるか?ああん?

877 :デフォルトの名無しさん:2015/03/03(火) 21:55:52.38 ID:wsPgJ5pW
>>872
なくていいと思ってるわけじゃないよ。 皆が納得する方法が出てきてないだけ。
デバッガって動作モデルとのかかわりが密接だから今の段階で決めちゃうと色んなところに実装上の制約が付いてしまう。
優先順位からすると後回しにせざるを得ない。

878 :デフォルトの名無しさん:2015/03/03(火) 23:02:36.83 ID:r/2tg9ng
継続とデバッグクッソ相性悪そう

879 :デフォルトの名無しさん:2015/03/04(水) 16:59:22.87 ID:j98GupsC
>>872
評価モデルをもっと詳細に限定しないとデバッガの規格化は無理かと…

880 :デフォルトの名無しさん:2015/03/04(水) 17:35:44.52 ID:7DGSkK2u
>>873,877,879
CLのSLIMEみたいな環境作りやすくするためにあれば良いのにって思ったけど複雑なんですね。

881 :デフォルトの名無しさん:2015/03/04(水) 20:31:07.41 ID:fTXSh4En
>>880
Schemeの委員会では永久に決まらないと思うよ。

882 :デフォルトの名無しさん:2015/03/04(水) 22:38:43.46 ID:fQkEMJLj
どちらかと言うと開発環境の話で、言語の話とは違うかなという気もする。
だいたいデバッガを言語仕様に入れてる言語の方が少ないだろ。 つーか CL くらいじゃろげ。

883 :デフォルトの名無しさん:2015/03/05(木) 00:48:28.30 ID:qG2rkvqS
>>878
むしろ継続はデバッグに役立ったりするものだと思ってた

884 :デフォルトの名無しさん:2015/03/05(木) 21:52:44.84 ID:NuwmT6bY
>>882
Smalltalk「CLより話題にされない」

885 :デフォルトの名無しさん:2015/03/06(金) 01:55:23.65 ID:Dms4WI2A
>>884
言語仕様あったっけ?

886 :デフォルトの名無しさん:2015/03/06(金) 02:37:08.54 ID:xxYE53/X
>>885
ANSIの規格があるよ

Schemeも実用面の規格を決めるワーキンググループ作ればいいのに

887 :デフォルトの名無しさん:2015/03/06(金) 03:32:47.66 ID:O/G8n7ch
>>886
R7RS-large のこと、ときどきでいいから思い出してください

888 :デフォルトの名無しさん:2015/03/06(金) 17:42:23.91 ID:fD9xUJrM
>>887
仕様を大きく実用的にするんならCommonLispと変わらないのでは?
Schemeの存在意義は何なのだろう?

889 :デフォルトの名無しさん:2015/03/06(金) 19:05:08.46 ID:OWDvyc6M
>>888
正しさ

890 :デフォルトの名無しさん:2015/03/06(金) 22:20:46.48 ID:8EAwhf++
インストールしたままずっと使ってなかった PLTScheme がいつの間に…

891 :デフォルトの名無しさん:2015/03/06(金) 23:21:38.86 ID:UY349KBP
PLTScheme とか懐かしすぎる。ナウなヤングを取り込むために Racket って改名したんだよね。

892 :デフォルトの名無しさん:2015/03/07(土) 01:04:14.21 ID:UBHk2s1Q
>>888
Schemeが目指すのは弱点や制約を取り除いていくこと。
実用面での不足があるという弱点を取り除こうとするのは当初からの存在意義通り。

例えばだよ、Lisp一般の話として、他のプログラミング言語では構文を追加できないという制約をマクロで取り払った。
これは制約からの解放ではあっても現実としてマクロ機能を追加してもいる。
でも、マクロを追加するのは、必要だからたくさんの構文を追加しましょうというのとは違うだろ。

ニュアンスを説明し難いけど、結論からすると全然違うよ。

893 :デフォルトの名無しさん:2015/03/07(土) 07:00:57.60 ID:xd/6S2NW
Schemeは言語仕様としてはコンパクトで拡張性のあるものにしておいて、
実用的な機能はライブラリとして外部化しましょうという話だった。
しかしネットワーク周りなど、ライブラリ単体では対応しきれない部分が増えてきて仕様が拡大する方向になった。

Common Lispの場合はそういう機能は処理系ごとの独自拡張になっていて、それらの違いを吸収するライブラリがデファクトスタンダードになっている。
まさにカオス。

894 :デフォルトの名無しさん:2015/03/07(土) 07:56:30.31 ID:n1mOj6rB
scheme の弱点は未定義の多さじゃないの
REPLも決めてないのに弱点を減らしてるとか言われても

895 :デフォルトの名無しさん:2015/03/07(土) 09:25:38.24 ID:UBHk2s1Q
REPLは開発環境に属することなので言語仕様の一部として決めるべきじゃないと思うな。
仮に決めるとしても今というのは早すぎる。
何が正しいのかわからない段階で決めるってのは足かせになるだけ。
つまり今のSCHEMEはまだまだ未完成な存在であると同時に、
急いで決めるとろくなことがないという思いによってそうなってる。
未定義の中で現れて現実の中で鍛えられた実装を元に仕様にフィードバックするという形
なので、ちょくちょく仕様改定するというスタンス。

896 :デフォルトの名無しさん:2015/03/07(土) 11:09:13.35 ID:+J/J7yz/
>仮に決めるとしても今というのは早すぎる。
20年後も同じこと言ってそうだ

897 :デフォルトの名無しさん:2015/03/07(土) 11:51:27.13 ID:zWLiFiwu
つまり今決めること自体が弱点ということですな

898 :デフォルトの名無しさん:2015/03/07(土) 13:14:14.81 ID:UBHk2s1Q
>>896
結果的に時間はかかるんだけど優先順位の問題だよ。

ダークコーナーだったトップレベルの挙動がR6RSで一旦決まったけど、
あれにREPLを持ち込むと破綻してしまうということははっきりしてる。
拙速ではあったけど正しいと思う形に (それまで決まってなかった部分の) 挙動を決めたら
REPLがはじき出されたんだよ。
REPLが絶対に必要でそこでの挙動が明確でなければならないとするなら、
正しいと思う形を曲げ (妥協し) なきゃいけない。

最終的には妥協するにしても優先順位がどちらかというと
REPLではないな。

899 :デフォルトの名無しさん:2015/03/07(土) 15:12:16.07 ID:8yn+ZBgr
慎重すぎて女を口説けない男のようだな

900 :デフォルトの名無しさん:2015/03/07(土) 15:23:38.49 ID:aKvU0ICu
理想が高すぎて、一度も社会に出ぬまま引きこもってる中年ニートみたいなもん?

901 :デフォルトの名無しさん:2015/03/07(土) 16:11:14.18 ID:jlwQ27AM
>>899
せめて「理想が高すぎて現実の女に興味をなくした」って言い換えようず

902 :デフォルトの名無しさん:2015/03/07(土) 16:20:06.75 ID:bJg/o0s7
>>899
むむむ、今の俺だ

903 :デフォルトの名無しさん:2015/03/07(土) 17:01:05.36 ID:+J/J7yz/
>>901
自分が失くすのは構わんが、今後新規に関わる人も皆当然興味を失くすのが前提になったらアウト
単純に「世の中の動きから取り残された」状況にならんことを祈るよ

904 :デフォルトの名無しさん:2015/03/07(土) 17:34:03.61 ID:UBHk2s1Q
Schemeは世の中の動きに左右されない「絶対」を求めてるんだよ。
出来るかどうかは別として。

905 :デフォルトの名無しさん:2015/03/07(土) 17:50:01.09 ID:vVpvhS79
いわゆる、大統一理論ですね

906 :デフォルトの名無しさん:2015/03/07(土) 19:08:01.94 ID:XTc1RaYc
little schemerってなんだか読めてないようなモヤモヤの残る本だな。
前に戻って読み返せばモヤモヤ晴れるだろうか?

907 :デフォルトの名無しさん:2015/03/07(土) 19:15:10.49 ID:xoLws0MD
Seasoned SchemerかSICP読んでから読み返せば?

908 :デフォルトの名無しさん:2015/03/07(土) 19:39:22.66 ID:bJg/o0s7
ふたりともtheはつけろよ
ま、それはさておき
the seasoned schemerとか
先に読むのはどうかねえ
ま、それがわかって
「なぁあるほどぉ、そういうことで
ああだってのね」
となることはあるだろうが
俺はもう一度、概念を把握する、作り上げで行くという姿勢で読み返したほうがいいと思うけどな

909 :デフォルトの名無しさん:2015/03/07(土) 19:57:14.98 ID:8yn+ZBgr
>>906
その本はコンピューター専攻ではない学生のためのに
易しく再帰を説明した本なのだけど、逆に素質のある人には回りくどい。
もっと簡潔明瞭に書かれた本を読んでみては?

910 :デフォルトの名無しさん:2015/03/07(土) 19:59:25.39 ID:bJg/o0s7
素質のある人がthe little schemerよむと
モヤモヤするのかね!!

911 :デフォルトの名無しさん:2015/03/07(土) 22:06:15.10 ID:n1mOj6rB
>>898
うーん、たかがREPLもきちんと定義できないなんて…。
上の方で話題に出てたデバッガもそうだ。
現実的に有効な機能をきちんと定義するのに問題がある仕様なんて、穴だらけ過ぎるだろ。

912 :デフォルトの名無しさん:2015/03/07(土) 22:08:51.33 ID:dU/Etb22
「気に入らなければ自分で作っていいのよ」

913 :デフォルトの名無しさん:2015/03/07(土) 22:13:14.95 ID:fJ4fWqRj
そのとおぉりぃぃ!

914 :デフォルトの名無しさん:2015/03/07(土) 23:22:37.44 ID:xyf+MLfm
むしろ立ち位置的には好き勝手に自分専用の言語に拡張するための土台の言語だなSchemeは

915 :デフォルトの名無しさん:2015/03/07(土) 23:32:53.77 ID:+J/J7yz/
Scheme処理系自作してちゃんと使ってる人にはそれで良いね
ヒトサマの作った処理系の上で俺様拡張風味の何かをしたい人には制限事項にしかならんけど

916 :デフォルトの名無しさん:2015/03/07(土) 23:33:55.40 ID:n1mOj6rB
それだとポータビリティーないじゃんか

917 :デフォルトの名無しさん:2015/03/07(土) 23:45:02.22 ID:UBHk2s1Q
>>911
C++ に REPL がないのは穴か?
(厳密にはあるが本来の意味を大幅に外れないと成立しない。)
REPL を含めて厳密な意味論を定められる言語仕様の方が特異だろ。
ただ、 R6RS はひとつの完成系ではあっても急ぎすぎたと認識したから
R7RS では R6RS を踏まえつつもだいぶん後戻りした。

918 :デフォルトの名無しさん:2015/03/07(土) 23:52:27.79 ID:UBHk2s1Q
>>916
色んな可能性があって、色んな実装が出てきて、
それでもやっぱり決まってしまったものが仕様になっていく。
今のところポータビリティがないという弱点はあるけど、
急いで埋めてヤワな土台にしてしまうのはSCHEME的でない。

919 :デフォルトの名無しさん:2015/03/07(土) 23:59:59.70 ID:kh22EAvY
規格だと思わなけりゃいいんじゃ
あくまでも実装の目安的な

920 :デフォルトの名無しさん:2015/03/08(日) 00:06:10.63 ID:mBgBNV1f
>>918
健全な認識だなぁ
賛成

921 :デフォルトの名無しさん:2015/03/08(日) 00:07:15.63 ID:fkWa9Bdj
>>919
実際少なくない人数がデファクトスタンダードの明文化だと思ってるよ

922 :デフォルトの名無しさん:2015/03/08(日) 00:15:33.24 ID:hAEoeYlm
汚かろうが何だろうが、とにかくガチガチに決めてしまわない事には、
実務で使われる日なんか永遠にやって来ないよ

923 :デフォルトの名無しさん:2015/03/08(日) 00:18:58.04 ID:fkWa9Bdj
>>922
もとも教育用だしな
実用したいなら現状ではCL一択だろ

924 :デフォルトの名無しさん:2015/03/08(日) 00:19:19.58 ID:GL0YGVUh
schemeを実務で使ってる俺は異端か…

925 :デフォルトの名無しさん:2015/03/08(日) 00:23:32.09 ID:9Ii0EqXh
>>922
言語には思想があるんだよ
実用重視ならCL使えば?
逆にCLがあるからScemeは下手な妥協や拙速を避けてチンコじっくりいじりながらジリジリ歩めるんだし

926 :デフォルトの名無しさん:2015/03/08(日) 00:25:25.12 ID:7xd0W6kM
実務で使うといっても個人環境で勝手にひっそり使うのと、チーム単位プロジェクト単位部署単位企業単位で使うのとでは意味が違うな
日常作業に使うのと製品に組み込むのもまた違う

927 :デフォルトの名無しさん:2015/03/08(日) 00:29:36.65 ID:9Ii0EqXh
>>924
俺もそれなりに使ってるよ
今のSchemeでは無理な実務ばかりじゃないもんね
異様に仕様で決めろいってる人が言葉の定義のなかで実用後どうたらといってるんだろ
「今のSchemeでは耐えられない実務にはSchemeは実用的でない。今の仕様に対する思想ではとても無理であろう実務にはSchemeはいつまでたっても実用的とはならない」
意味ないこと言ってますよね
あたかもCLの思想でSchemeの試用を決めろといってるがごとし
CLとSchemeの違いを
F-BASiCとN88-basicのような方言性とでも思ってるんじゃないかしらん

ゲゲ、例えが古すぎたぁん!

928 :デフォルトの名無しさん:2015/03/08(日) 00:31:30.67 ID:GL0YGVUh
プロジェクトのマニュアルの自動更新がscheme

929 :デフォルトの名無しさん:2015/03/08(日) 00:42:35.13 ID:NIsrNg9t
GNUとはCとLispの環境であり、スクリプトはschemeで書かれる。
というのがストールマンの描いた絵だったはずだが。

930 :デフォルトの名無しさん:2015/03/08(日) 00:47:05.40 ID:7xd0W6kM
>>929
gmake 4.0 のアナウンス見たときは正直笑った
ストールマンはきっと諦めない

931 :デフォルトの名無しさん:2015/03/08(日) 01:45:51.41 ID:0F9JK/ta
ああいう使い方はちょっとなぁ。
いっそS式で書けるmakeみたいなのなら
自動生成とかしやすくて使うかもしれんけど、
makeにSchemeのコードを埋め込めてもたいしてうれしくはないよな。
余計なお世話としか言い様が無い。
そんなことよりやることがあるだろうと小一時間問い詰めたい。

932 :デフォルトの名無しさん:2015/03/08(日) 05:07:44.92 ID:Byenq80O
>>926
その通り。実務ったって、いろんなのがあって。実質個人で使ってるだけなら仕様がどうとかどうでもいい。

大きな規模で使おうとするときに、ポータビリティーはありません、言語仕様はまた変わるかもしれません、
この処理系はバージョン1.0ですらないしデバッガはまだありません、
なんて言えないよ。

933 :デフォルトの名無しさん:2015/03/08(日) 05:55:43.09 ID:dM1B/3iR
またか

だから、そういうケースの実務には使わない

精神病なのかね

934 :デフォルトの名無しさん:2015/03/08(日) 10:30:53.50 ID:9sAHmNQQ
先週ぐらいにとある大規模学会をみてきたのだけど
ambがあったら自動でできることを
「アルゴリズムの効率化」
とか主張してるの2つぐらいあった
学生の発表なんてそんなものだよね

935 :デフォルトの名無しさん:2015/03/08(日) 15:11:25.31 ID:GL0YGVUh
そのアルゴリズムの効率化の十分条件がambによる自動化可能性にあることを証明したのならたいしたものだ

936 :デフォルトの名無しさん:2015/03/09(月) 04:45:07.13 ID:mG+quTto
来たぞ来たぞ来たぞーーーーーーーーーーーーーーーーーーーーーー
よっしゃいくぜーーーーーーーふぉおおおおおおおおおおおおおおおおおおおおおおおーーー

937 :デフォルトの名無しさん:2015/03/09(月) 13:44:41.18 ID:v0Direyg
なぜキーボードクラッシャー君がここに?

938 :デフォルトの名無しさん:2015/03/09(月) 14:00:47.82 ID:MIiFNtq2
当たり前のことを当たり前にギリシャ文字でこねくり回しただけの教授の博士論文も見たことあるし学生ならそんなもんじゃね

939 :デフォルトの名無しさん:2015/03/09(月) 14:10:21.58 ID:nX4ux0rb
圏論ですら米田補題が出るまで当たり前すぎて意味なしと言われてたしな…

940 :デフォルトの名無しさん:2015/03/09(月) 15:02:58.12 ID:MIZIuI1f
>>934
大会の質疑応答で言えよw

941 :デフォルトの名無しさん:2015/03/12(木) 01:34:50.99 ID:j/aB62lr
「Lispとか過去の遺物じゃんwww」
みたいな人がSICPやOn Lisp読んだ事あったら恥ずかしくなるような
車輪の再発明を「新発見だ」みたいに発表してるのは
何度も見たことある

942 :デフォルトの名無しさん:2015/03/12(木) 03:50:24.06 ID:7OAll1Oe
車輪の再発明もできんような頭悪い奴とリアルで話すのはゴメンだな

943 :デフォルトの名無しさん:2015/03/12(木) 08:53:26.76 ID:oXTZrsQT
>>942

大丈夫?

944 :デフォルトの名無しさん:2015/03/12(木) 10:22:25.20 ID:7OAll1Oe
>>943
ほら、だから関わりたくない
レスするなよ

945 :デフォルトの名無しさん:2015/03/12(木) 10:37:16.55 ID:oXTZrsQT
>>944

大丈夫?

946 :デフォルトの名無しさん:2015/03/12(木) 10:50:33.86 ID:uoklKat4
>>942は一度落ち着いてから>>941を読み直すべきなんじゃなかろうか?

俺は941を井の中の蛙にがっかりしていると受け取ったのだが。

947 :デフォルトの名無しさん:2015/03/12(木) 11:14:57.59 ID:S2kvzV7/
車輪の再発明自体悪いことではない。ただ新発見ではない。

948 :デフォルトの名無しさん:2015/03/12(木) 11:51:29.85 ID:oXTZrsQT
>>946
たぶん荒したいだけなんじゃないかな?
あげ足とったつもりなんだろうけど。

949 :デフォルトの名無しさん:2015/03/12(木) 12:21:34.48 ID:8KPMPqV1
車輪は俺が育てた

950 :デフォルトの名無しさん:2015/03/12(木) 13:13:58.26 ID:I+QZUs3i
写経や車輪の再発明は、それと、分かってて学習の為にやるんだつたら意味がある。
あと、既にライブラリが有るかもしれないと考えて探すのは結構手間だね。

951 :デフォルトの名無しさん:2015/03/12(木) 15:02:07.74 ID:AUktVMvd
本当に「恥ずかしくなるような車輪の再発明」なのかどうか判断できん。
恥ずかしいのはそれを「車輪の再発明」だと思い込んでいる方かもしれん。

952 :デフォルトの名無しさん:2015/03/12(木) 21:24:14.49 ID:BlO2EFmA
>>950
ただ闇雲にやっても持続、徹底できれば、なにか生み出すことはある。
そのくらい勢いが重要なのがソフトウェアの世界。

953 :デフォルトの名無しさん:2015/03/12(木) 22:59:35.87 ID:BpQwY1yS
>>941
投票理論なんかは車輪の再発明してくれたおかげで再興したわけだしな…

954 :デフォルトの名無しさん:2015/03/12(木) 23:43:19.17 ID:+1wqWj9A
Lisperはこの世のゴミ
はやく死滅するべし

955 :デフォルトの名無しさん:2015/03/12(木) 23:47:40.76 ID:BpQwY1yS
MITとかカーネギーメロンが学部教育でschmeやlisp使ってるせいで、明日いきなりlisperだけが絶滅したらヤバいことになる

956 :デフォルトの名無しさん:2015/03/12(木) 23:50:01.94 ID:8KPMPqV1
そこら辺はどうでもいいが、emacs 使いが困る

957 :デフォルトの名無しさん:2015/03/12(木) 23:57:11.17 ID:LXfZ/6pV
車輪うんぬんは再発明上等を言い出す人が必ずいるので
新たな例えを発明しよう

958 :デフォルトの名無しさん:2015/03/13(金) 00:00:24.56 ID:FU516fsY
頭痛が痛い
牛の牛乳
馬鹿な馬

959 :デフォルトの名無しさん:2015/03/13(金) 00:14:00.18 ID:eoqJjB0g
>>956
Lispperの過半数がemacs使いじゃん

960 :デフォルトの名無しさん:2015/03/13(金) 00:22:12.65 ID:RKBSigws
え?あ、俺DOS窓だけど。

961 :デフォルトの名無しさん:2015/03/13(金) 00:26:42.61 ID:qOQded/N
対話じゃなくてファイルに書くときEmacsとかVimについてるインデント機能使わず
メモ帳みたいなのでインデントを手動で調整してる人いる?

962 :デフォルトの名無しさん:2015/03/13(金) 00:44:32.83 ID:Z3IUNRM5
>>961
ありえん
そんな苦労したくない

963 :デフォルトの名無しさん:2015/03/13(金) 02:27:09.08 ID:Ub5E2hhm
Emacs というデフォルトのコードフォーマッターがあって良かった。
他の言語では延々コードフォーマットの議論が続いている。

964 :デフォルトの名無しさん:2015/03/13(金) 08:41:18.79 ID:L2AAjpRP
>>955
まだ使われてるのか? PythonやJuliaに移行したと思い込んでいた。

965 :デフォルトの名無しさん:2015/03/13(金) 15:26:36.15 ID:q9YHarJA
おお専ブラから見れなくなっとる。
これはいよいよ移行先を考える時かもしれんね

966 :デフォルトの名無しさん:2015/03/13(金) 15:54:27.09 ID:xd+XZJxk
対応してる専ブラって Jane だけ?

967 :デフォルトの名無しさん:2015/03/13(金) 17:08:52.83 ID:Kz1GJ3Av
2chproxy + navi2ch でもOK

968 :デフォルトの名無しさん:2015/03/13(金) 18:55:44.10 ID:rRn17oFI
Lispパワーで解決オナシャス

969 :デフォルトの名無しさん:2015/03/13(金) 19:40:39.41 ID:Z3IUNRM5
m2bってブラウザがclojureだったような?

970 :デフォルトの名無しさん:2015/03/13(金) 20:00:27.03 ID:FU516fsY
w3mだしな…

971 :デフォルトの名無しさん:2015/03/13(金) 20:07:27.87 ID:00b/bH0l
mateも

972 :デフォルトの名無しさん:2015/03/14(土) 04:01:37.91 ID:jLXkoe98
LISPのちからってすげー!

973 :デフォルトの名無しさん:2015/03/14(土) 11:12:40.35 ID:4IdWRzeQ
style使ってるけど、画像消せば前と全く同じだよ。

974 :デフォルトの名無しさん:2015/03/14(土) 20:57:33.69 ID:t9+30c8t
Larceny Ver0.98 がかなりいいぞ。
R7RS準拠。高速でかつ使い勝手もなかなか。

975 :デフォルトの名無しさん:2015/03/14(土) 21:02:08.89 ID:ApfUTziF
どんなに凄くてもschemeだとどのみち黒板言語なんだよなぁ
開発、デバッグ環境とプラットフォームサポートの面がもう救えないレベルで台無し

学習には向いてるけど実用しようとすると社会とか職場の方から拒否されるというか。

976 :デフォルトの名無しさん:2015/03/14(土) 21:15:06.32 ID:t9+30c8t
>>975
Schemeはもともと学習用だよ。
違うのか?

977 :デフォルトの名無しさん:2015/03/14(土) 21:19:24.27 ID:ApfUTziF
>>976
違わないから悲しいんじゃないか orz

978 :デフォルトの名無しさん:2015/03/14(土) 21:20:24.07 ID:t9+30c8t
お前、全然、わかってねぇな。

979 :デフォルトの名無しさん:2015/03/14(土) 21:25:36.68 ID:o8vTK2nf
Schemeを極めれば同僚すらも必要ないからな…

980 :デフォルトの名無しさん:2015/03/14(土) 21:27:01.29 ID:ApfUTziF
>>978
な、なんだと!
とある言語つかっいて、ここで継続(言語でサポートされた)を使えればとか、俺schemeをIDEに統合(jvm上で実装なのに)することができたらとか、SLIME(CLってデバッグとか規格なんだよなー)は良いなぁとか
↑みたいな気持ちってまちがってるのん?

981 :デフォルトの名無しさん:2015/03/14(土) 21:29:07.22 ID:26umtMML
>>976
違うよ。

982 :デフォルトの名無しさん:2015/03/14(土) 22:19:55.01 ID:mxloomuL
>>981


983 :デフォルトの名無しさん:2015/03/14(土) 22:20:38.35 ID:Vvak8Yob
Larceny って凄い名前だね。窃盗罪って

984 :デフォルトの名無しさん:2015/03/15(日) 00:58:41.19 ID:+SwbGbdH
>>966
Live2chもおk

985 :デフォルトの名無しさん:2015/03/15(日) 11:11:55.51 ID:9t7SNHfe
>>983
Planner -> Conniver -> Schemer
ときたからさらにsneakyなLarcenyなんじゃない?
Gaucheに比べてけた違いに速い。デバッガもしっかり搭載されてる。
SRFIもほぼ網羅されている。Windowsへのポートもしっかりしている。

986 :デフォルトの名無しさん:2015/03/15(日) 17:10:25.70 ID:c2c0PQSQ
244 キングコングニードロップ(芋)@転載は禁止 sage 2015/03/15(日) 17:08:02.38 ID:W4yifZHC0
>>237
だからぁ
バカは書き込み禁止な
暗記で勝負は低偏差値連中の発想だろう
英語といえば単語と熟語の暗記
数学といえば解法のパターンの暗記
でだ、東大も暗記勝負だとおもっているのが哀れすぎる
ま、日本では「車輪の再発明」をする勉強法はクソというやつ多すぎ
それが世界からバカにされること。
まず、自分で車輪を発明し現代にまで追いつくことが肝要。
欧米はその方針なわけだな。
ま、大学以前でそれを準備するわけだが

987 :デフォルトの名無しさん:2015/03/15(日) 17:16:45.28 ID:1sapWkKW
情報増加(千論文/日)と、マシンのプロセッサ速度の限界(GHzレベル)とネットの通信速度の限界(十万Gbpsレベル)の比較から、
知識の創出よりも、暗記や検索の方が価値があるというのが結論です

988 :デフォルトの名無しさん:2015/03/15(日) 17:20:41.46 ID:c2c0PQSQ
>>987
わははははは
バカは書き込み禁止な

989 :デフォルトの名無しさん:2015/03/15(日) 21:12:14.80 ID:VgUe2KPC
>>988
自治厨やるなら次スレ立ててこいカス

990 :デフォルトの名無しさん:2015/03/16(月) 00:55:02.57 ID:EEYZoZ1i
基地外のわはは君に触るな

991 :デフォルトの名無しさん:2015/03/16(月) 09:55:12.09 ID:Y2MfWqZ6


992 :デフォルトの名無しさん:2015/03/16(月) 13:47:13.38 ID:EEYZoZ1i
Lisp Scheme Part40 [転載禁止]&copy;2ch.net
http://peace.2ch.net/test/read.cgi/tech/1426481152/

次スレ

993 :デフォルトの名無しさん:2015/03/17(火) 09:53:40.93 ID:DlMQwoSW


994 :デフォルトの名無しさん:2015/03/17(火) 10:24:35.15 ID:k/LbPUX+
>>992
乙です

236 KB
■ このスレッドは過去ログ倉庫に格納されています

★スマホ版★ 掲示板に戻る 全部 前100 次100 最新50

read.cgi ver 05.04.00 2017/10/04 Walang Kapalit ★
FOX ★ DSO(Dynamic Shared Object)