板検索:
【入門】Common Lisp その10【質問よろず】 (990)
まとめビュー
1
デフォルトの名無しさん[sage]   投稿日:2013/02/20 15:31:16
Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、
Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。
それ以外でもCommon Lispについての話題なら歓迎します。

ま、ゆっくりやりましょう。

「いいものの本質は、いかなる時代においても変わらない」byパワーズ

■前スレ
【入門】Common Lisp その9【質問よろず】

■Wiki
http://wiki.fdiary.net/lisp/ (id:guest pass:cl)
http://cl.cddddr.org/
http://tips.lisp-users.org/common-lisp/


2
デフォルトの名無しさん[]   投稿日:2013/02/21 00:11:50
< `∀´>ニダー

3
デフォルトの名無しさん[sage]   投稿日:2013/02/21 01:11:18
初心者です
コメント1件

4
デフォルトの名無しさん[sage]   投稿日:2013/02/21 01:15:25
小心者です

5
デフォルトの名無しさん[sage]   投稿日:2013/02/21 01:21:09
>3
そうか

6
デフォルトの名無しさん[sage]   投稿日:2013/02/21 05:59:51
404 Blog Not Found:(笑) - 書評 - Land of Lisp
http://blog.livedoor.jp/dankogai/archives/51854832.html

7
デフォルトの名無しさん[sage]   投稿日:2013/02/21 10:06:46
NetwalkerにCL乗せたいなぁ
ポケットサイズのlispマシン欲しい
コメント1件

8
デフォルトの名無しさん[sage]   投稿日:2013/02/21 22:59:55
>7
Netwalkerは普通のlinuxマシンじゃないの ?

Vaio Pとかいろいろ買ったけど
Macbook Airが一番無難で可搬性の高いUnix(lispの動くプラットフォーム)
なんじゃないかと現状思う。

AndroidがLinuxだと思ってNECのLife Touch Note買ったけど
shellなくてわろた

9
8[sage]   投稿日:2013/02/21 23:02:51
8はNetwalkerは普通のLinuxだからCommon Lispは簡単に
インストールできるんじゃないの ?という意味で書きました。

わかりにくい書き方ですみません

10
デフォルトの名無しさん[sage]   投稿日:2013/02/21 23:18:26
common lispの入門にon lispを読んでるんだけどしらない関数ばかりで入門には向いてない気がしてきた
他に系統的に学べるサイトはないかな
コメント1件

11
デフォルトの名無しさん[sage]   投稿日:2013/02/21 23:34:49
本ってどの言語にしてもそこそこ自力で何か書けるレベルで読まないとあんまり続かない気がする
コメント1件

12
デフォルトの名無しさん[sage]   投稿日:2013/02/21 23:50:39
practical common lispをさっと読んでからCLtL2を読み始めるとよいと思う

13
デフォルトの名無しさん[sage]   投稿日:2013/02/22 00:15:08
英語読めないから本買わないと駄目なのか
結構値がはるしキツいな

14
デフォルトの名無しさん[sage]   投稿日:2013/02/22 00:19:45
ちょっと前最初のほうだけ英語で読んでみたけど
そこまで難しい英語じゃなかったので
読もうと思えば読めるレベル

15
デフォルトの名無しさん[sage]   投稿日:2013/02/22 17:29:22
>11
その点手続型言語は基本的な文法をちょろっとやれば
そこそこ自力で書き始められて、壁にぶち当たったら本を読んで、
とできるけど、lispはそれが難しかった
コメント1件

16
デフォルトの名無しさん[sage]   投稿日:2013/02/22 17:57:40
他にもともと別の手続き型言語を知ってたとかではなくて?


17
デフォルトの名無しさん[sage]   投稿日:2013/02/23 00:31:27
最初はcar、cdrとか再帰だけで色々練習問題解いてたけど
それだけでも色々できて面白かったけどなあ

18
デフォルトの名無しさん[sage]   投稿日:2013/02/23 01:57:48
>15
手続き型・・・小学校で習う表記に似てるからじゃね?

19
デフォルトの名無しさん[sage]   投稿日:2013/02/23 02:10:07
おれはPAIPを勧めるがなぁ。
あと、lisp をできるようになりたいだけなら日本語版でもいい。でも、凄いエンジニアになりたいのなら、英語力は必須だよ。
逆に考えればlispと英語が同時に学べるチャンスだ。

20
デフォルトの名無しさん[sage]   投稿日:2013/02/23 13:34:08

21
10[sage]   投稿日:2013/02/23 13:58:28
>20
やっぱりこれがいいのか
読んでみる、ありがとう

22
デフォルトの名無しさん[sage]   投稿日:2013/02/23 16:08:30
緑のナマモノ本、Amazonで発売日に在庫切れか
でもまさか予約分しか入荷して無かったってオチじゃないよな

23
デフォルトの名無しさん[sage]   投稿日:2013/02/23 16:23:40
そんなもんじゃない?発売当日に在庫ありになってないのは珍しくない
予約してた人は今日届くのかな

24
デフォルトの名無しさん[sage]   投稿日:2013/02/23 22:55:28
予約してたけど届くには月曜…

25
デフォルトの名無しさん[sage]   投稿日:2013/02/24 04:01:59
新宿の紀伊国屋とかに行けばあるかな。
しかし正直コードのある本は電子書籍で出してほしい。

26
デフォルトの名無しさん[sage]   投稿日:2013/02/24 12:05:25
emacs + slime の環境なんですが
C-c C-d h と同じことを他のライブラリでやれるようにするものってありませんかね?
コメント1件

27
デフォルトの名無しさん[]   投稿日:2013/02/24 13:14:51
木のそれぞれの値を2倍にする関数を教えてください。。。
(mapcar #'(lambda (x) (* 2 x)) '((1 2) 3))
的な。
コメント3件

28
デフォルトの名無しさん[sage]   投稿日:2013/02/24 13:31:22
初心者の俺が練習がてら書いてみた
破壊的変更よく知らないので戻り値で返す

(defun two-times-every-node(tree)
(cond ((null tree) tree)
((atom tree) (* tree 2))
(t (cons (two-times-by-node (car tree)) (two-times-by-node (cdr tree))))))

(print (two-times-every-node '(1 (2 5 (10 30)) 3)))

29
デフォルトの名無しさん[sage]   投稿日:2013/02/24 13:32:25
再帰で呼び出す関数名が間違ったままだった・・・
(defun two-times-every-node(tree)
(cond ((null tree) tree)
((atom tree) (* tree 2))
(t (cons (two-times-every-node (car tree)) (two-times-every-node (cdr tree))))))
(print (two-times-every-node '(1 (2 5 (10 30)) 3)))
コメント1件

30
デフォルトの名無しさん[sage]   投稿日:2013/02/24 13:37:49
>26
ドキュメント方面で共通の仕組みがdocstringくらいしかないから、
C-c C-d dくらいしかないと思う。CCLだとdocstring表示されんけど。
それ以上が欲しいならレッツ自作。

>27
自分が知る限りない。レッツ自作。

31
デフォルトの名無しさん[sage]   投稿日:2013/02/24 13:39:36
MaximaがLispで書かれていると聞いてちょっと感動した

32
デフォルトの名無しさん[sage]   投稿日:2013/02/24 14:05:07
>27
初心者の俺も練習がてら書いてみた。

(defun 2bai-2bai (node)
(if (consp node)
(mapcar #'2bai-2bai node)
(* node 2)))

(2bai-2bai '(1 (2 5 (10 30)) 3))

33
デフォルトの名無しさん[sage]   投稿日:2013/02/24 14:06:54
>27
(defun f (x)
(if (listp x)
(mapcar #'f x)
(* 2 x)))

(mapcar #'f '((1 2) 3))

34
デフォルトの名無しさん[sage]   投稿日:2013/02/24 14:11:53
なるほどmapcarで再帰するなんて方法があるのか・・・

35
デフォルトの名無しさん[sage]   投稿日:2013/02/24 14:14:36
> mapcarで再帰する
定石だと思うぞ

36
デフォルトの名無しさん[sage]   投稿日:2013/02/24 14:25:29
mapcarとかreduceとか既存のものを利用していかに楽するかを考えるんだ。
働きたくないでござる。早くニートになりたい。

37
デフォルトの名無しさん[sage]   投稿日:2013/02/24 14:41:47
他人のソースを殆ど見ないので全然定石を知らないなあ

38
デフォルトの名無しさん[]   投稿日:2013/02/24 19:38:17
>29,30,32,33
ありがとうございます!
mapcarで再帰は自分も知らなかったので眼から鱗です。

39
デフォルトの名無しさん[sage]   投稿日:2013/02/24 23:38:24
よくある木の再帰だと思うけど

40
デフォルトの名無しさん[sage]   投稿日:2013/02/25 00:23:46
マクロとかXMLとかの処理を書くときに嫌ってほど出て来るな。

41
デフォルトの名無しさん[sage]   投稿日:2013/02/26 01:44:26
sbclのwindows fork版ライセンスについて質問します
https://github.com/akovalenko/sbcl-win32-threads/wiki
ここで入手できるバイナリと自作のlispソースを一緒に配布するとき、
どのようなライセンスにしなければならないのでしょうか
sbcl自体は public domain + BSD-style licenses のようですが…
コメント1件

42
デフォルトの名無しさん[sage]   投稿日:2013/02/26 18:17:17
Land of Lisp原著持ってたから立ち読みで済ませるつもりだったのだけど
リストリテラルを書きかえるのはよくないって注に書いてあって
ドキっとしたのでついレジに持っていってしまった

あと訳した人が元ヤンキーである可能性が微レ存

43
デフォルトの名無しさん[sage]   投稿日:2013/02/26 22:13:22
はぁ?Shiroさんだぞ?

44
デフォルトの名無しさん[sage]   投稿日:2013/02/28 00:35:27
>41
昔書いたやつどぞー。責任は持てんので、あくまでも参考程度に。

http://cl.cddddr.org/index.cgi?%E8%89%AF%E3%81%8F%E3%81%82%E3%82%8...#H-1z3jsjcugixm7

ちなみに、他のライブラリを使ってそれを同梱する場合、
そっちのライセンスにも注意。特にGPL。
コメント1件

45
41[sage]   投稿日:2013/02/28 01:27:01
>44
ありがとうございます。わかりました。

46
デフォルトの名無しさん[sage]   投稿日:2013/02/28 16:16:19
slimeのC-M-,に割り当てられているslime-previous-locationとはどういう関数なのでしょうか?

説明には "Go to the previous location, depending on context.
When displaying XREF information, this goes to the previous reference."

と在るのですがprevious locationというのが何を指しているのか分かりません。
どなたかお教えくださいm( _ _ )m

47
デフォルトの名無しさん[]   投稿日:2013/03/02 20:48:54
(setq parameter '(`(,a ,b) `(,c ,d) `(,e ,f)))
というリストがあったとして

`(let (,@parameter)) ; とすると
;; (let (`(,A ,B) `(,C ,D) `(,E ,F))) になりますが(分かる)

`(let hoge
`(let (,,@parameter))) ; とすると

;; (LET HOGE
;; `(LET ((,A ,B) (,C ,D) (,E ,F))
;; )) ;という風に前者と違って`が消えたものが挿入されるのは何故なのでしょうか?
コメント1件

48
デフォルトの名無しさん[sage]   投稿日:2013/03/02 22:43:19
無駄がない形に最適化してくれてるんじゃないの。知らんけど。
コメント1件

49
デフォルトの名無しさん[sage]   投稿日:2013/03/02 23:11:53
>47
仕様はコレ。
http://www.lispworks.com/documentation/HyperSpec/Body/02_df.htm
処理系は好きに最適化してよいそうです。

50
デフォルトの名無しさん[]   投稿日:2013/03/02 23:29:30
>48,49
ありがとうございます。`(`(,A ,B))が`((,A ,B))と等価なのですね。
しかし``(,,A ,,B)と`(,A ,B)は等価ではないのですね。
以下のマクロを読み解こうとしてドツボにはまっていました。難しい!

(defmacro once-only ((&rest names) &body body)
(let ((gensyms (loop for n in names collect (gensym))))
`(let (,@(loop for g in gensyms collect `(,g (gensym))))
`(let (,,@(loop for g in gensyms for n in names collect ``(,,g ,,n)))
,(let (,@(loop for n in names for g in gensyms collect `(,n ,g)))
,@body)))))

51
デフォルトの名無しさん[sage]   投稿日:2013/03/02 23:49:09
`(`(,a))は`((,a))と等価じゃなくね?

(let ((a "hoge"))
(list 'ほら `((,a)) `(`(,a))))
;=> (ほら (("hoge")) (`(,A)))

``(,,@parameter)が
`(`(,A ,B) `(,C ,D) `(,E ,F))にならずに
`((,A ,B) (,C ,D) (,E ,F))になるのってどうなんだろう。
そのコードは後者の挙動を前提にしているような。

52
デフォルトの名無しさん[sage]   投稿日:2013/03/07 15:54:02
わけがわからないよ

53
デフォルトの名無しさん[sage]   投稿日:2013/03/09 23:17:33
CCL 1.9出たで。

公式
http://ccl.clozure.com/

リリースノート訳
http://qiita.com/items/968166dde6a820ebb97e

54
デフォルトの名無しさん[sage]   投稿日:2013/03/11 21:57:44
java等のようにクラスの中にメソッドを定義する
オブジェクト指向ができるlispのライブラリってあるんですかね?

defclass class-name ({superclass-name}*) ({slot-specifier}*) ({method-specifier}*)
みたいに定義して(method object)で呼び出せるようなの

pclには(send object 'foo)になるのが嫌だから今の形になったとあるけど
(foo object)で呼び出せるようにするのって不可能だったんですかね?
sendが嫌だというなら(slot-value object 'foo)だってsendと似たようなもんだと思うんですけど..

55
デフォルトの名無しさん[sage]   投稿日:2013/03/11 22:48:48
>defclass class-name ({superclass-name}*) ({slot-specifier}*) ({method-specifier}*)
ここまで決まってたら10分ぐらいでマクロ作れそうだな。

sendが残ったままだったら、slot-valueを使う時に(send object 'slot-value 'foo)としなければいけない。
sendはメソッド呼び出しで、slot-valueはあくまでアクセスするためのメソッド。

pclにはsendが残ったままだったら、
(mapcar #'foo '(obj-a obj-b obj-c))としたい時に
(mapcar #'(lambda (x) (send x 'foo)) '(obj-a obj-b obj-c))としなければいけず、
これではLISPの力を発揮しきれないという様な事が書いてあった気がする。

56
ハツネツ[sage]   投稿日:2013/03/11 23:21:23
Javaのようにクラスの中でメソッドを定義するマクロを作りました

(defmacro my-defclass (class-name superclasses slots methods)
  `(progn
     (defclass ,class-name ,superclasses ,slots)
     ,@(mapcar #'(lambda (method-spec)
                   (destructuring-bind (method-name args &rest body) method-spec
                     `(defmethod ,method-name ((this ,class-name) ,@args) ,@body)))
               methods)))

(my-defclass person ()
  ((name :initarg :name)
   (age :initarg :age :accessor age))
  ((greet (your-name)
     (format nil "Hello, ~a! my name is ~a." your-name (slot-value this 'name)))
   (birthday ()
     (incf (slot-value this 'age)))))

(setf taro (make-instance 'person :name "Yamada Tarou" :age 20))

(slot-value taro 'name) ;=>"Yamada Tarou"
(greet taro "hoge") ;=> "Hello, hoge! my name is Yamada Tarou."

(slot-value taro 'age) ;=> 20
(age taro) ;=> 20 ↑と同じ (:accessor ageとしたから使える)
(progn
  (birthday taro)
  (birthday taro)
  (age taro)) ;=> 22

57
デフォルトの名無しさん[sage]   投稿日:2013/03/12 20:49:01
先輩方すげっwww
簡単にできちゃうのか。。
なんでこういう方向でいかないんですかね?
今のoop慣れした世代にはこっちの方が親近感あるから
とっつきやすいと思うんだけど

58
デフォルトの名無しさん[sage]   投稿日:2013/03/12 20:55:24
マクロは大勢で共同作業するときには C++ のテンプレート並みに諸刃の刃ぁぁぁ
なんです

59
デフォルトの名無しさん[sage]   投稿日:2013/03/12 21:00:59
諸刃の剣っていいたかったのか?

60
デフォルトの名無しさん[sage]   投稿日:2013/03/12 21:31:28
テンプレよりもオペレータオーバロードによくたとえられる気がするけど

61
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/03/12 21:47:58
何の蓄積もないところからってことになると統制がとれないだろうけど、
デファクトスタンダードになりうるクラス指向ライブラリがあれば、それなりに使う人もいるんじゃね?

62
デフォルトの名無しさん[sage]   投稿日:2013/03/14 00:43:41
フィボナッチ数列を行列のべき乗で求めるやつ書いてみたら
なかなかあほっぽくなっとるからかっちょよく書いとくれ
doはなんか物騒だったので使えんかった
xyzzyで動かしちょる

(defun fibv (n)
(let ((a 1)(b 1) (c 1) (d 0) (a2 1) (b2 1) (c2 1) (d2 0)
(t1 0)(t2 0)(t3 0)(t4 0))
(while (> n 0)
(setq t1 (+ (* a2 a) (* b2 c)))
(setq t2 (+ (* a2 b) (* b2 d)))
(setq t3 (+ (* c2 a) (* d2 c)))
(setq t4 (+ (* c2 b) (* d2 d)))
(setq a2 t1)
(setq b2 t2)
(setq c2 t3)
(setq d2 t4)
(setq n (- n 1)))
d2))

参考
http://itpro.nikkeibp.co.jp/article/COLUMN/20061010/250176/
コメント1件

63
デフォルトの名無しさん[sage]   投稿日:2013/03/14 02:42:13
>62
再帰を使わずに書きたいのね、多分
こんな感じだろうか。

(defun fib (n)
(loop with (a b c d) = '(1 1 1 0)
for (a2 b2 c2 d2) = '(1 1 1 0)
then (list (+ (* a2 a) (* b2 c))
(+ (* a2 b) (* b2 d))
(+ (* c2 a) (* d2 c))
(+ (* c2 b) (* d2 d)))
repeat n
finally (return d2)))

64
デフォルトの名無しさん[sage]   投稿日:2013/03/14 14:33:24
CLはマルチパラダイム言語というが、
いったんCLOSの機能を使い出すと副作用でまくりで
関数プログラミングとの共存など不可能のように思える。

65
デフォルトの名無しさん[sage]   投稿日:2013/03/14 14:37:36
純粋関数型パラダイムはちょっと特殊だからなぁ
コメント1件

66
デフォルトの名無しさん[sage]   投稿日:2013/03/14 21:10:25
>65
式と文が別物ってところに山ほど違和感がある >いわゆる普通の言語
# 高級アセンブラの C は除く

67
デフォルトの名無しさん[sage]   投稿日:2013/03/14 21:47:43
その C だって、GCC なら ({ ... }) で囲めばなんでも式になるぞw
そもそも、代入が式だし。

68
デフォルトの名無しさん[sage]   投稿日:2013/03/14 22:12:50
> GCC なら ({ ... }) で囲めばなんでも式
いや、それは極論だし

69
デフォルトの名無しさん[sage]   投稿日:2013/03/14 22:47:11
H

70
デフォルトの名無しさん[sage]   投稿日:2013/03/15 19:38:17
land of lisp まだ来ねー

71
デフォルトの名無しさん[sage]   投稿日:2013/03/15 21:24:32
昔のDOSの表計算アプリみたいな画面を
REPLで実現してくれるライブラリってない?
コメント1件

72
デフォルトの名無しさん[sage]   投稿日:2013/03/16 00:51:53
>71
*curses.so あたりを ffi すればいいのではあるまいか?
コメント1件

73
デフォルトの名無しさん[sage]   投稿日:2013/03/16 09:18:52
cl-ncursesっていうのを見つけた
ありがとう

74
デフォルトの名無しさん[sage]   投稿日:2013/03/16 14:14:13
CLOSで名前の衝突に気を使うのがかったるい
たとえば、パッケージA,Bを別々に定義して、その中でそれぞれクラスA, Bを定義、
そのクラスをパッケージαで使う、とか考えた時に、

;; まずAを定義して
(defpackage :A (:use :cl) (:export :attr-of))

(in-package :A)

(defclass A () ((attr :reader attr-of)))

;; 次にBを定義
(defpackage :B (:use :cl) (:export :attr-of))

(in-package :B)

(defclass B () ((attr :reader attr-of)))

;; αで2つを一緒に使おうとすると、名前が衝突して落ちる
(defpackage :child-alpha (:use :cl :A :B))


A-attr, B-attr, とかいうアクセサはオブジェクト指向的じゃないから嫌だけど、
attr-ofにすると、先にアクセサ用パッケージでシンボルを用意するのもダルい。

いっそパッケージを、アクセサ、クラス、総称関数の3つだけにしたらいいのかね。
お前らはどうやってんの?
コメント1件

75
デフォルトの名無しさん[sage]   投稿日:2013/03/16 17:08:50
read-lineで入力を求める際に
初期値として任意の値をセットしておくことはできませんか?
コメント1件

76
デフォルトの名無しさん[sage]   投稿日:2013/03/16 19:16:56
>75
どこかのユーティリティライブラリにありそうですけど、
自分の使ってるものには見当たらなかったので書いてみました。
こういう感じので良いですか?

http://paste.lisp.org/+2WZC
コメント1件

77
デフォルトの名無しさん[sage]   投稿日:2013/03/16 19:42:23
>74
自分ならだるさを許容するかパッケージプリフィックスで手を打つと思う。

78
デフォルトの名無しさん[sage]   投稿日:2013/03/16 21:33:03
>76
ありがとうございます。
やりたいことは初期値をセットしておいてその一部を書き換えてread-lineさせる
という動作なので、"default value"が表示されてる状態にしたいのです。
コメント2件

79
デフォルトの名無しさん[sage]   投稿日:2013/03/16 21:49:19
これに対するマクロor関数を作っていただけますか?
以下のnthを1まとめにしようとしています
2時間粘っても上手く行きません・・・

(nth 6 (nth 3 (nth 4 (nth 8 (xmls:parse (drakma:http-request *sample-xml*))))))
(nth 3 (nth 2 (nth 4 (nth 8 (xmls:parse (drakma:http-request *sample-xml*))))))
コメント1件

80
デフォルトの名無しさん[]   投稿日:2013/03/16 21:59:27
(defmacro nnnnnnth (obj &rest indices)
(reduce (lambda (a i) `(nth ,i ,a)) indices :initial-value obj))

(macroexpand '(nnnnnnth hoge 1 2 3 4))
; => (NTH 4 (NTH 3 (NTH 2 (NTH 1 HOGE))))

希望と合ってる?
コメント1件

81
デフォルトの名無しさん[sage]   投稿日:2013/03/16 21:59:43
なぜこんなことをしているのかというと、XMLからデータを取ってこようとしているからです

厚かましいお願いですが、XMLで属性からデータを取得できるやり方も教えていただけないでしょうか

82
デフォルトの名無しさん[sage]   投稿日:2013/03/16 22:07:48
>80
完璧です!ありがとうございます
畏れ入りました

自分のレベルがあまりに低いからかもしれませんが
なぜこんな短時間でマクロを考えつけるのでしょうか?
やっぱり経験ですか?

83
デフォルトの名無しさん[sage]   投稿日:2013/03/16 22:16:15
>78
自分はあまりその辺りに詳しくないのですが、おそらく端末制御の領分になると思います。
難易度がかなり上がりますが、それでもその方式にこだわりがあるのなら、
>72-73で挙がっている情報を調べてみると手がかりが掴めるかもしれません。
コメント1件

84
デフォルトの名無しさん[sage]   投稿日:2013/03/16 22:44:43
>79
XMLのツリーを操作するときにリストとして直に扱うのはあまりお勧めしません。
(nth 6 ...)や(caddddr ...)のようなコードでは何をやっているのかさっぱり分かりません。

XMLSなら

(let ((xmls (xmls:parse "<element attribute=\"value\">text</element>")))
(xmls:xmlrep-attrib-value "attribute" *xmls*))

のようにすれば要素の値を取得できます。既存のアクセサを使ったり、
自分でアクセサを作って利用することを強くお勧めします。

また、XMLSはリストの使用を全面に押し出したプロダクトなので、初心者には向きません。
エラーハンドリングも簡略化されているため、コードを追えないと原因も探れません。
慣れないうちはClosure XMLでDOMやSTP、XPathを使った方が良いと思います。
コメント1件

85
デフォルトの名無しさん[sage]   投稿日:2013/03/16 22:53:51
何も考えず(ql:quickload "xpath")したら
http://common-lisp.net/project/plexippus-xpath/examples.html
これ入ったのでこれ使うといいと思う。依存関係でClosure XMLも入るし
コメント1件

86
デフォルトの名無しさん[sage]   投稿日:2013/03/16 23:06:11
>84
>85
なるほど。勉強になります。
それらを踏まえ、もう一度作りなおしてみます。

ご教授ありがとうございました!

87
デフォルトの名無しさん[sage]   投稿日:2013/03/16 23:25:06
逆引きCommonLispに結構例が載ってるんで、参考にどうぞ。
こういう例が欲しいとか、そういうのがあったら教えて下さい。

http://tips.lisp-users.org/common-lisp/index.cgi?XML%E3%83%8F%E3%83%B3%E...
コメント1件

88
デフォルトの名無しさん[sage]   投稿日:2013/03/16 23:34:39
>87
ありがとうございます。早速ブックマークに登録しました。

89
デフォルトの名無しさん[sage]   投稿日:2013/03/17 07:44:14
>78,83
ncurses に libform ってのがくっついてて,
こいつの set_field_buffer() とかをffiして使えば何とかなるのかな?
後は自前で作りこむくらいしか思いつかない

90
デフォルトの名無しさん[sage]   投稿日:2013/03/17 09:20:40
>83,89
ヒントありがとうございます!
その辺をslimeのcontribあたりと合わせて見てみます。

91
デフォルトの名無しさん[sage]   投稿日:2013/03/17 18:46:12
一定の出力を最後にまとめて文字列として返したいのですが、どういう風にすればいいのでしょうか
今は↓のように文字列をconcatenateで連結させていますが、formatのnilの部分をストリームに変えて出来ないものかと思っています
(concatenate 'string
(format nil "テスト")
(format nil "bar")
)

92
デフォルトの名無しさん[sage]   投稿日:2013/03/17 19:03:55
(defun mkstr (&rest args)
 (with-output-to-string (s)
 (dolist (a args) (princ a s))))
こういうこと?

93
デフォルトの名無しさん[sage]   投稿日:2013/03/18 09:45:42
それです!ありがとうございました

94
デフォルトの名無しさん[]   投稿日:2013/03/18 18:07:16
thunkってどういうときに使うんですか?
コメント1件

95
デフォルトの名無しさん[sage]   投稿日:2013/03/18 18:41:36
感謝したとき

96
デフォルトの名無しさん[sage]   投稿日:2013/03/18 18:49:13
thanks!

97
デフォルトの名無しさん[sage]   投稿日:2013/03/18 21:46:13
>94
めちゃくちゃ大雑把に言えば
「今評価しないで後で評価されるかも知れない式」
全般のことじゃね?

98
デフォルトの名無しさん[sage]   投稿日:2013/03/18 23:14:34
CLOSあんま好きじゃない派の人って
やっぱ構造体使うんですか?それともリスト?

99
デフォルトの名無しさん[sage]   投稿日:2013/03/19 00:32:11
両方使ってる気がします。

100
デフォルトの名無しさん[sage]   投稿日:2013/03/20 15:00:45
質問です。

value に格納されている文字列

"hogehoge 'abc' 1112 'def'999 'ghi'"
でクオーテーションで囲まれている部分を$(数字) で置き換えて
"hogehoge $(0) 1112 $(1)999 $(2)"
という風にしたいのですが

"hogehoge $(0) 1112 $(0)999 $(0)"
となってしまいうまくいきません

(let* (
(value "hogehoge 'abc' 1112 'def'999 'ghi'")
(pattern "\\('[^']*'\\)")
(eval-value value)
)
(setq eval-value (replace-regexp-in-string pattern (format "$(%d)" 0) eval-value nil nil 1))
(setq eval-value (replace-regexp-in-string pattern (format "$(%d)" 1) eval-value nil nil 1))
(setq eval-value (replace-regexp-in-string pattern (format "$(%d)" 2) eval-value nil nil 1))
)
1回目のreplace〜で全て$(0)になってしまい、引数が↓のときとおなじ結果になってしまいます。
(replace-regexp-in-string pattern (format "$(%d)" 0) eval-value)

これってどうすればいいんでしょうか?
コメント1件

101
デフォルトの名無しさん[sage]   投稿日:2013/03/20 15:36:30
>100
それEmacs Lispだと思うんで、Emacsのスレで聞いてください。

てーか、そういうときはM-x describe-functionで関数を調べてみてください。
"Replace all matches for REGEXP with REP in STRING."って書いてます。

102
デフォルトの名無しさん[sage]   投稿日:2013/03/23 01:58:05
list*とconsは全く同じものですか?

103
デフォルトの名無しさん[sage]   投稿日:2013/03/23 02:31:29
consは2引数やで

104
デフォルトの名無しさん[sage]   投稿日:2013/03/23 09:47:49
たしかにそうでした

105
デフォルトの名無しさん[sage]   投稿日:2013/04/07 23:35:25
みなさんは作った実行ファイルの大きさとか気にならないですか?
コメント2件

106
デフォルトの名無しさん[sage]   投稿日:2013/04/08 04:27:40
>105
なんで気になるの?
自分はMegademoで4Kとか64Kでも作らない限り気にもしないけど
コメント1件

107
デフォルトの名無しさん[sage]   投稿日:2013/04/08 16:44:33
>105
16G とか 32G の主記憶が当たり前の時代に, 組み込み物とか >106 のような
用途でもない限り, 実行ファイルの大きさとか気にしてもしょうがないじゃん.
組み込み物だって, 1G とか 2G の主記憶積んだやつあるのに...

108
デフォルトの名無しさん[sage]   投稿日:2013/04/08 17:12:57
コンパイラが吐き出す実行ファイルの大きさよりも、実行時のメモリ消費量のほうが気になります。

109
1/2[sage]   投稿日:2013/04/09 01:33:46
型宣言を入れたのに何故か高速化されなくて困ってます。
(setf d (make-array '(1000 1000) :element-type 'double-float :initial-element 1.0d0))
という2次元配列の合計を求める関数なんですが、
(defun sum-d (a)
(let ((sum 0))
(dotimes (r 1000) (dotimes (c 1000) (incf sum (aref a r c)))) sum))

これに型宣言を以下のように入れてみました。
(defun sum-d-opt (a)
(declare (type (simple-array double-float (1000 1000)) a))
(let ((sum 0.0d0))
(declare (type double-float sum))
(dotimes (r 1000) (dotimes (c 1000) (incf sum (aref a r c)))) sum))

110
2/2[sage]   投稿日:2013/04/09 01:47:29
コンパイル&実行結果


CL-USER> (time (sum-d d))
took 49,000 microseconds (0.049000 seconds) to run.
32,000,064 bytes of memory allocated.
1000000.0D0
CL-USER> (time (sum-d-opt d))
took 50,000 microseconds (0.050000 seconds) to run.
32,000,064 bytes of memory allocated.
1000000.0D0


高速化どころか遅くなってます・・
どなたか原因がわかる方おしえていただけますでしょうか?
使っている処理系はClozure CL 1.9です。
コメント1件

111
デフォルトの名無しさん[sage]   投稿日:2013/04/09 05:17:12
>110 コンパイラが賢くないとしか言えないんだが...
disassemle すると, 型宣言した方はsse命令を使おうとして,
そのための準備コードが増えて遅くなってるように見える
(手元にあるのは 1.7 だけど....)
コメント1件

112
デフォルトの名無しさん[sage]   投稿日:2013/04/09 23:28:54
うちだと、

 (SUM-D D)
 took 140 milliseconds (0.140 seconds) to run.

 (SUM-D-OPT D)
 took 79 milliseconds (0.079 seconds) to run.

前にSBCLの開発者が数値計算のベンチマーク取ってたけど、
CCLはあまり成績が良くなかった。ABCLのが速いくらいだったような。
速度が重要な場面ではSBCL使った方が良いと思う。

ついでに型推論とかもSBCLみたいに頑張らないから、
theとかdeclareとか無駄にいっぱい付けないと駄目だったはず。

あと、基本的な確認で申し訳ないけど、最適化宣言は大丈夫?
実行時型チェックとか外すのに条件があったりするけども。

http://accomplish-nothing.blogspot.jp/2011/02/clozure-cl.html
コメント1件

113
デフォルトの名無しさん[sage]   投稿日:2013/04/10 00:52:01
http://permalink.gmane.org/gmane.lisp.steel-bank.devel/17159
GSoC2013
ガチリストになってて面白いけど、どれぐらい応募あるのかな。

114
109[sage]   投稿日:2013/04/10 01:29:29
>111
>112

どうもありがとうございます。
確かにdisassembleするとSSE2のaddsdが使われてました。
型宣言することでgenericな + 演算子がネイティブの機械語命令に
最適化されたとしても、必ずしも高速化されるとは限らないんですね。
なお、最適化宣言は
(declare (optimize (speed 3) (debug 0) (safety 0)))
を入れてますが、あってもなくても速度は変わりませんでした。

ちなみに、SBCL(1.1.4)で試してみたところ劇的に高速化されました。

CL-USER> (time (sum-d d))
0.097 seconds of real time
CL-USER> (time (sum-d-opt d))
0.004 seconds of real time

Windows環境なので、比較的安定らしいClozure CLを使ってましたが、
doubleの数値計算を多用する場合はSBCLの方がいいかもしれませんね・・
コメント2件

115
デフォルトの名無しさん[sage]   投稿日:2013/04/10 06:43:55
>114
> doubleの数値計算を多用する場合はSBCLの方がいいかもしれませんね・・

CCLの結果
CL-USER> (time (sum-d d))
(SUM-D D) took 58,927 microseconds (0.058927 seconds) to run
CL-USER> (time (sum-d-opt d))
(SUM-D-OPT D) took 46,165 microseconds (0.046165 seconds) to run

SBCL(1.1.6)の結果
CL-USER> (time (sum-d d))
Evaluation took:
0.028 seconds of real time
0.027940 seconds of total run time (0.027940 user, 0.000000 system)
CL-USER> (time (sum-d-opt d))
Evaluation took:
0.001 seconds of real time
0.001564 seconds of total run time (0.001465 user, 0.000099 system)

116
デフォルトの名無しさん[sage]   投稿日:2013/04/11 00:22:31
>114
ごめん。SBCL開発者じゃなくておにぎりの人だった。

http://cl.cddddr.org/bench/cl-bench-2012-03-30.html

一応Nikodemus Siivolaのこんなんもあるけど。

http://random-state.net/files/microbench-2011-11-29.html

ここ一年くらいでSBCLもWindowsの対応が劇的に改善されたから、
特に理由がなければSBCLで良いんじゃないかなー、と思う。
CCLも過去にWindowsでの結構クリティカルなバグとかもあったし、
個人的には安定してる印象は持ってない。

117
デフォルトの名無しさん[sage]   投稿日:2013/04/26 20:42:23
(A B C D E) のcadddrがDになるのは何故ですか?

118
デフォルトの名無しさん[sage]   投稿日:2013/04/26 20:44:58
(car (cdr (cdr (cdr '(A B C D E))))
(car (cdr (cdr '(B C D E))))
(car (cdr '(C D E)))
(car '(D E))
D

119
デフォルトの名無しさん[sage]   投稿日:2013/04/26 20:55:17
cdrのcdrのcdrのcarだから
逆順に読めばいい

120
デフォルトの名無しさん[sage]   投稿日:2013/04/26 22:39:28
カドゥドゥドゥラァ

121
デフォルトの名無しさん[]   投稿日:2013/04/28 13:39:23
コマンドラインから
$ sbcl --script sample.lisp

と実行するとき、sample.lispの中の
quicklispたちは別ファイルに分けたりするべきなのですか?

あまりプロジェクトに関わったりしたことないので
ファイル配置の勘所がわからないです

122
デフォルトの名無しさん[sage]   投稿日:2013/04/28 13:58:00
Quicklispたちっていうのは(ql:quickload :foo)みたいな式のこと?
sample.lispの中っていう表現が良く分からないです。

QuicklispはLinuxでのAPTみたいなパッケージ管理システムだから、
自分でそのパッケージを同梱して配布する必要はないですよ。

$ cat
(ql:quickload :alexandria)
(alexandria:define-constant +foo+ "foo" :test #'equal)
$ sbcl --script sample.lisp

って感じなら、Quicklispを導入してる環境で実行すると、
自動的にAlexandriaをダウンロードしてコンパイルしてくれるので。
コメント1件

123
デフォルトの名無しさん[sage]   投稿日:2013/04/28 14:18:27
あと、自分が見てきた中では、

* 必要なライブラリは事前にQuicklispや手動でインストールしておくことが前提
* 必要なライブラリの読み込みはASDFで依存関係を定義して利用

という形のプロダクトが多かったです。

作っているのがライブラリならそのままASDF経由で利用してもらって、
アプリケーションならC言語のmain的なトップレベルの関数を用意しておいて、
REPLから呼び出したり、実行形式にしたコアイメージのトップレベルに指定したり、
スクリプトから(asdf:load-system :foo)とか(ql:quickload :foo)で読み込み、
トップレベルの関数を呼び出し、って感じじゃないでしょうか。

この辺り、Common Lispでは色々方法があって、全部説明すると長くなるので、
どんな感じの運用をしたいか書いてくれると回答をもらいやすいかも。
コメント1件

124
デフォルトの名無しさん[]   投稿日:2013/04/28 15:09:47
>122

とても理解できました

例えば、sample.lispが定期的にDBのバックアップを作るスクリプトだとして
(ql:quickload 'cl-dbi)が必要だとします
sbcl --script sample.lisp

をcronに登録するとき、sample.lispの先頭には
(load "~/.sbclrc)
(ql:quickload 'cl-dbi)
を書いておくのは自然なんでしょうか?
コメント1件

125
デフォルトの名無しさん[]   投稿日:2013/04/28 15:22:31
>123

ASDFファイル(sample.asd)に、実行時に必要になるライブラリを
明記しておくのが多いということでしょうか?
コメント1件

126
デフォルトの名無しさん[sage]   投稿日:2013/04/28 17:56:12
>124
スクリプトでは自然だと思います。

>125
プロジェクトという言葉があったり、ファイル構成を気にしてらしたので、
一定以上の規模のソフトウェアも作りたいのかも、と思い、追記しました。
スクリプト用途ならASDFに対応する必要はないです。

ASDFに対応すると便利なのは、ソフトウェアのビルドに手順が必要だったり、
書いたソフトウェアを配布したいときです。ビルド用にcompile-fileするスクリプトを書いたり、
マクロを使うときにeval-whenで:comple-toplevel指定したりって面倒じゃないですか。
そういうときに利用するとその辺りを良きに計らってくれるので楽です。
makeとかrakeとかmvnとかantとかその辺に該当します。
コメント1件

127
デフォルトの名無しさん[]   投稿日:2013/04/28 23:01:16
>126
とてもよくわかりました

ありがとうございました!

128
デフォルトの名無しさん[sage]   投稿日:2013/05/09 20:17:14
ブラウザゲーム作りたいです(´・ω・`)

129
デフォルトの名無しさん[sage]   投稿日:2013/05/09 22:15:46
ゲーム内部のバックエンド部分なら問題なく書けると思うから頑張れ。
ユーザインターフェイス(画面周りとか操作周りとか)は、
多分JavaScriptの力を借りることになる。

130
デフォルトの名無しさん[sage]   投稿日:2013/05/09 22:47:45
Common Lisp から JavaScript のコードを生成するとかどうよ。
コメント1件

131
デフォルトの名無しさん[sage]   投稿日:2013/05/11 20:15:46
>130 parenscript の話?

132
デフォルトの名無しさん[sage]   投稿日:2013/05/24 11:45:04
ついでにnode.jsも使わせて

133
デフォルトの名無しさん[sage]   投稿日:2013/05/29 02:04:18
lispをjavascriptに変換してからv8で動かしたら
stalinより高速なんじゃないのかな
コメント1件

134
デフォルトの名無しさん[sage]   投稿日:2013/05/29 03:05:21
事前に型付けしまくってAOTコンパイルで頑張るCommon Lispと
実行時情報を元にJITコンパイラが頑張るJavaScriptだと、
アプローチ的にはむしろ対極にある気がするけど

135
デフォルトの名無しさん[sage]   投稿日:2013/05/29 04:19:34
v8はプロファイラで速度のボトルネック探してから
そこだけ型推論かけてNativeにコンパイルするそうだ

136
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/05/29 12:08:35
asm.js は Common Lisp 的アプローチって言えるんじゃね。

>133
JavaScript って毎回ソースコードを読込むところからスタートして実行するところまでやらなきゃならないから、
コンパイル・最適化が実行時間に含まれるわけで、あまり気合入れた最適化も出来ないんだよな。
つまり、めいっぱい頑張って最適化すればいいわけじゃなくて、
全体として一番よくなるほどほどのところを目指すトレードオフの見極めが重要な JS は
Common Lisp とは目標が違うから高速化のために組合わせるのはうまくない気がする。

137
デフォルトの名無しさん[sage]   投稿日:2013/05/29 12:15:29
asm.jsはrabbit compiler的だよ。
部分言語である小さいcore言語を設定してて。

それからJITは気合入れたい所に目一杯気合入れることが可能なフレームワークです。
実行時プロファイルが使えるので。

138
デフォルトの名無しさん[sage]   投稿日:2013/06/07 01:56:27
何でもいいので仕事くだされ
twitter.com/g000001

139
デフォルトの名無しさん[sage]   投稿日:2013/06/07 01:59:19
PHPでよければ

140
デフォルトの名無しさん[]   投稿日:2013/06/08 21:18:23
(A B C D)は
なんで (A . (B . (C . D))) じゃなく (A . (B . (C . (D . nil)))) なの?最後の nil は何なの?

141
デフォルトの名無しさん[sage]   投稿日:2013/06/08 21:32:26
長さ0のリスト

142
デフォルトの名無しさん[sage]   投稿日:2013/06/08 21:33:48
nilはなにもないことを表す特殊な記号
() と書くこともある

143
デフォルトの名無しさん[sage]   投稿日:2013/06/08 21:36:06
乳首じゃないからな

144
デフォルトの名無しさん[sage]   投稿日:2013/06/08 21:59:34
コンスセルはcar部とcdr部とで構成されており
cdr部に別のコンスセルを入れることでリストを構成する
また、そのようなコンスセルの連鎖がリストであるので
cdr部にリストを入れることでリストを構成する、とも言える・・・
(C . D)においてcdr部に入っているのはコンスセルではなく、D。これはシンボルである
これに対して(D . nil)はcdr部がnilなのだけれど、
このnilが空リストである()と同義なので、,猟蟲舛亡陲鼎(D . nil)はリストである
補足すると
(A . (B . (C . D)))のcdr部は(B . (C . D))
(B . (C . D))のcdr部は(C . D)、ではなく((C . D))が入り
((C . D))のcdr部はnil、car部が(C . D)となる

とか適当なことを言ってみる

145
デフォルトの名無しさん[]   投稿日:2013/06/08 22:00:19
いや、nilそのものの意味を訊いてるわけじゃなくてdana

146
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:04:11
(A . (B . (C . (D . nil)))) →  (A . (B . (C . (D . ()))))

ということだ

147
144[sage]   投稿日:2013/06/08 22:05:18
ああ、全然ちがう!!
恥ずかしくて死にそう・・・orz

148
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:09:38
最後がなぜnilなのかは、リストの定義がそうだからとしか言いようがない。

149
144[sage]   投稿日:2013/06/08 22:10:00
(B (C . D))と勘違いしてた><

150
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:13:52
(A B) は (A . B) であり (A . (B . nil)) ではない
(A B C) は (A . (B . (C . nil))) であり (A . (B . C)) ではない
(A B C D) は (A . (B . (C . (D . nil)))) であり (A . (B . (C . D))) ではない
コメント1件

151
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:15:29
3つ以上並んだやつの略記リストは最後はnil
コメント1件

152
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:20:23
Lispは難解だな

153
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:33:31
(A . (B . C)) は A と (B . C) の2つで構成されるリストと解釈される つまり略式は (A (B C)) となってしまう
(A . (B . (C . nil))) は A と B と C と nil の4つで構成されるリストと解釈される

154
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:37:08
同様に (A . (B . (C . D))) は (A B (C D)) のことになる (A B C D)にはならない
コメント1件

155
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:38:31
(A) => (A . nil)
で、
(A (B C)) => (A . ((B . (C . nil)) . nil))
であってる?

156
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:41:43
>154
違う
×  (A B (C D))
○ (A (B (C D)))

(A B (C D)) は (A . (B . ((C . D) . nil)))

157
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:43:29
なんだかオラ混乱してきたぞ

158
155[sage]   投稿日:2013/06/08 22:46:45
>151,153,154
は違うように思う。
(A . (B . (C . D))) は (A B C . D)

159
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:49:35
厳密なS式なんて時代遅れ

160
デフォルトの名無しさん[sage]   投稿日:2013/06/08 22:59:16
Lisp (programming language) - Wikipedia, the free encyclopedia
https://en.wikipedia.org/wiki/Lisp_(programming_language)#S-expressions_represent_lists

S-expressions represent lists

Parenthesized S-expressions represent linked list structures.
There are several ways to represent the same list as an S-expression.
A cons can be written in dotted-pair notation as (a . b), where a is the car and b the cdr.
A longer proper list might be written (a . (b . (c . (d . nil)))) in dotted-pair notation.
This is conventionally abbreviated as (a b c d) in list notation.
An improper list may be written in a combination of the two ? as (a b c . d) for the list of three conses whose last cdr is d (i.e., the list (a . (b . (c . d))) in fully specified form).

161
デフォルトの名無しさん[sage]   投稿日:2013/06/08 23:37:09
>150
(a b)は(a . (b . nil)) だよ。
(a . b)はあくまで(a . b)だ。
そもそも(a)が(a . nil)なのに、要素数が2のときだけ例外になんかせんよ。

162
デフォルトの名無しさん[sage]   投稿日:2013/06/09 00:58:48
(A B)と(A . B)は別物ってことか

163
デフォルトの名無しさん[sage]   投稿日:2013/06/09 01:09:24
lispの論文読めば分かる

Recursive Functions of Symbolic Expressions
http://www-formal.stanford.edu/jmc/recursive/node3.html

164
デフォルトの名無しさん[sage]   投稿日:2013/06/09 01:26:29
リストとは2つの値のペアのことであり、3つ以上は無い

165
デフォルトの名無しさん[sage]   投稿日:2013/06/09 06:42:57
盛り上がっているのかと思ったらパルプンテかかってる。

166
デフォルトの名無しさん[sage]   投稿日:2013/06/09 12:02:22
(A . (B . (C . D)))
(A . (B . (C . (D . nil))))
それぞれについて一要素づつ表示する関数でも書いてみたら?
どっちが便利か?
どっちを採用したくなるか?

167
デフォルトの名無しさん[]   投稿日:2013/07/03 00:00:00
CFFIの使い方解かりやすい日本語サイトか
簡単な例など何方か教えていただけますか?
コメント1件

168
デフォルトの名無しさん[sage]   投稿日:2013/07/03 00:00:00
>167
CFFI - Common LISP users jp
cl.cddddr.org/index.cgi?CFFI
コメント1件

169
デフォルトの名無しさん[]   投稿日:2013/07/03 00:00:00
>168
ありがとございます。

170
デフォルトの名無しさん[sage]   投稿日:2013/07/09 00:00:00
On Lispのtrec関数が単なる遅延評価の言い換えなだけな件

171
デフォルトの名無しさん[sage]   投稿日:2013/07/09 00:00:00
そうか。

172
デフォルトの名無しさん[]   投稿日:2013/07/12 00:00:00
Lisp in Summer Projectsに参加してる方、いますか?

173
デフォルトの名無しさん[sage]   投稿日:2013/07/17 00:00:00
日本語版のLet Over Lambdaは難しくて読めないっていうか、
読んでるとだんだんイライラしてくる。

174
デフォルトの名無しさん[sage]   投稿日:2013/07/17 00:00:00
気合で読んだぜ

175
デフォルトの名無しさん[sage]   投稿日:2013/07/17 00:00:00
そうか。

176
デフォルトの名無しさん[sage]   投稿日:2013/07/17 00:00:00
CLOSあったらいらないよね
plamdaとか
>Let Over Lambda

177
デフォルトの名無しさん[sage]   投稿日:2013/07/17 00:00:00
まあマクロの使用例ってところじゃねーの

178
デフォルトの名無しさん[sage]   投稿日:2013/07/18 00:00:00
it this self
もうアナフォリックマクロに使えそうな名前が残ってない

179
デフォルトの名無しさん[sage]   投稿日:2013/07/18 00:00:00
下のunwind-protectのプロテクト節の部分で、ストリーム sはきちんと閉じられるでしょうか?
それとも、変数lazyが他の値に再束縛され、sがガーベジコレクトされるまで開いたままなのでしょうか?

180
デフォルトの名無しさん[sage]   投稿日:2013/07/18 00:00:00
CL-USER> (let ((s (make-string-output-stream)))
(unwind-protect
(progn
(format s "When the stream s is closed?")
(lambda () (get-output-stream-string s)))
(close s)))
=> #<CLOSURE (LAMBDA () :IN #:DROP-THRU-TAG-1) {100B8FA80B}>

CL-USER> (defparameter lazy *)

... ;いろいろやる

CL-USER> (funcall lazy)
=> "When the stream s is closed?"
CL-USER> (funcall lazy)
=> ""

181
デフォルトの名無しさん[sage]   投稿日:2013/07/19 00:00:00
そのコードだと unwind-protect から抜けた時点で close されるよ。
(close s) の直前に (format t "closed") とか入れればわかると思う。

close 済み string output stream に
get-output-stream-string したときの動作は undefined 。
処理系によっては string output stream を close しても何もおこらない。

182
デフォルトの名無しさん[]   投稿日:2013/07/20 00:00:00
ありがとうございました。
もやもやがすっきりしました(:-D)

183
デフォルトの名無しさん[sage]   投稿日:2013/07/20 00:00:00
:-(

184
デフォルトの名無しさん[sage]   投稿日:2013/07/20 00:00:00
:-(8-D)

185
デフォルトの名無しさん[sage]   投稿日:2013/07/31 00:00:00
common lisp処理系はエラー時に行番号を教えてくれないんだけどどうやってエラー箇所を特定すればいいの?

186
デフォルトの名無しさん[sage]   投稿日:2013/07/31 00:00:00
あやしげなとこにprint・・・

187
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/07/31 00:00:00
処理系によってはデバッグモードに突入したりするんじゃないの。
処理系によって賢い機能がある場合もあると思うので、もうちょっと詳細を書くとよいかも。

マクロがあると「行番号」で表すのが難しかったりするんだよね。
マクロ定義の方が間違ってるかもしれないし、
そのマクロ定義もマクロで生成されてるかもしんない。
エラーが発生したときにどこを示していいんだか処理系には判断付けるのが難しい。
コメント1件

188
デフォルトの名無しさん[sage]   投稿日:2013/08/01 00:00:00
clispとかsbclの話なんだけどちょっとした失敗なのに行を教えてくれないせいで無駄に時間食うんだよ
行番号はマクロ展開後でいいと思うんだけど何が駄目なのかな
C言語もそうだし自作処理系でもそうやったけど特に不都合はなかったな
コメント2件

189
デフォルトの名無しさん[sage]   投稿日:2013/08/01 00:00:00
自分が言いたいのはなにかいい方法があれば教えてくださいってことね

190
デフォルトの名無しさん[sage]   投稿日:2013/08/01 00:00:00
>188
slime 使えば?
エラーが起こった箇所のソースに色けて
^N とか ^P でその場所にカーソルが飛んで
該当エラーの内容も表示してくれるぞ

191
デフォルトの名無しさん[sage]   投稿日:2013/08/01 00:00:00
2重書き込みのため表示しません 内容を確認する

192
デフォルトの名無しさん[sage]   投稿日:2013/08/01 00:00:00
それはslime-compile-defunでコンパイルした時のことなの?
自分はslime-eval-defunで評価してそれをreplから実行してたんだけど
それよりコンパイルしたほうがいいのかな

193
デフォルトの名無しさん[sage]   投稿日:2013/08/02 00:00:00
関数コンパイルするタイミングでコードの位置覚えてくれるんで、
編集中やデバッグ中に定義してる位置にジャンプしたりできる。

てーか、マクロ展開後の行番号とか教えられたりしても途方に暮れるだけだと思うな。
Seriesとか試せば分かるけど、とんでもない行数に展開されることとかあるし。

行番号なくてもスタックトレースあるからそれでコンディション発生した関数は分かる。
あとは適当な位置にbreakつっこんで止めたり、printで出力したりすりゃ結構すぐ分かるよ。

194
デフォルトの名無しさん[sage]   投稿日:2013/08/02 00:00:00
>187
処理系によっては、じゃなくて、Common Lispは規格でデバッガの存在が要求されてる。
ブレークポイントとかステップ実行とかディスアセンブラとかも同様。
コメント1件

195
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/08/02 00:00:00
>194
存在が要求されてるのは知ってたけど、
挙動がどの程度細かく規定されてるのかは知らなんだ。
ステップ実行まであるのか。 CL さんマジかっけー。

196
デフォルトの名無しさん[sage]   投稿日:2013/08/03 00:00:00
common lisp
slimeいれておおすごいと思った所で熱が覚めて辞めてしまい1年ほど経過

マクロとか使いこなせると楽しいんだろうけれど、何かそのために面白い題材とか無いものか

197
デフォルトの名無しさん[sage]   投稿日:2013/08/04 00:00:00
何も言わずにOn Lispを読み通せ

198
デフォルトの名無しさん[sage]   投稿日:2013/08/04 00:00:00
プログラミングのために本読むの嫌いだけど読むか・・

199
デフォルトの名無しさん[sage]   投稿日:2013/08/04 00:00:00
ふつーにwebアプリ作るといいよ。動的に変更できるのが面白い。

200
デフォルトの名無しさん[]   投稿日:2013/08/05 00:00:00
lispbox入れて始めてみたんだが、
コンパイルして関数を実行したら日本語が文字化けする
普通にslimeに直に入力したら日本語でも出力されるのに
こんな状況
i.imgur.com/A0pGoRn.png

201
デフォルトの名無しさん[sage]   投稿日:2013/08/05 00:00:00
Shift JIS を使うのは情弱

202
デフォルトの名無しさん[sage]   投稿日:2013/08/06 00:00:00
Allegro CLをEmacsからfi:common-lispで使っても日本語が文字化けする
なんでだろう

203
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00

204
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00
>203
直接alispを起動して日本語のシンボルや文字列を扱うのは問題ないんだ

205
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00

206
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00

207
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00
>206
うん 一番下のset-buffer-process-coding-systemが怪しくて消したりしたけど
起動した時のメッセージが微妙に変わったくらいだった

208
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00
;;; Note: The emacs-mule external-format, used to transmit international (non-ascii) characters for the emacs-lisp interface, is not being loaded due to lack of heap space in this
;;; Lisp session.
起動した時にこんなメッセージ出るんだけど英語苦手でよくわからん
なんかexpress版だとヒープ領域の制限で日本語化は無理とかかな

209
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00
clojureのREPL使っている人がいて
分からない関数carがあったら
(doc car)としてポンポン調べていたのですが
common lispにはこういう関数ありませんか?

210
デフォルトの名無しさん[sage]   投稿日:2013/08/07 00:00:00
(documentation 'car 'function)

SLIME使ってたらキー操作でHyperSpec引ける
コメント1件

211
デフォルトの名無しさん[sage]   投稿日:2013/08/08 00:00:00
>210
2画面で片方ブラウザにしてるんだけど、新規タブでばんばん開いちゃうのやめる方法ないかしら

212
デフォルトの名無しさん[sage]   投稿日:2013/08/08 00:00:00
firefoxみたいに引数で新規タブかどうか指定できるブラウザ使うか、w3使うか。

213
デフォルトの名無しさん[sage]   投稿日:2013/08/11 00:00:00
(setq x 1 y 2 z 3)
(defun arg-test (x y z) (eval '(list x y z)))
(arg-test 4 5 6)

;=>(1 2 3)

どうしてレキシカル変数はevalの中から見えないのですか?
コメント1件

214
デフォルトの名無しさん[sage]   投稿日:2013/08/11 00:00:00
evalは一番外の環境を使って評価するんじゃなかったっけ
コメント1件

215
デフォルトの名無しさん[sage]   投稿日:2013/08/11 00:00:00
>213
HyperSpec のevalのとこに書いてるよ
何故そうなってるか、という質問だとおれは答え難いなぁ。そんなものだ、と思って使ってた。詳しい人解説ヨロシク

216
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/08/11 00:00:00
前スレの 407 から 414 あたりで同じような話題が出てるよ。

217
213[sage]   投稿日:2013/08/12 00:00:00
>214,215,216
ありがとうございます。
前スレ見ました。最適化をしやすくするためにローカル環境を使わないようですね。
ちょうど去年の今頃の自分のレスでした。

(ICFPの時だ(そして今も))

218
デフォルトの名無しさん[sage]   投稿日:2013/08/12 00:00:00
なんだと?

219
デフォルトの名無しさん[sage]   投稿日:2013/08/12 00:00:00
お前は相変わらず成長しないな

220
デフォルトの名無しさん[sage]   投稿日:2013/08/12 00:00:00
ワロタ
そんなことあるもんなんだな

221
デフォルトの名無しさん[sage]   投稿日:2013/08/13 00:00:00
eval はあんまり使ったことないな

222
デフォルトの名無しさん[sage]   投稿日:2013/08/16 00:00:00
(find-if (lambda (lst) (find-if #'oddp lst)) '((2 4 6 8) (2 1 3)))
;=> (2 1 3)

ここで1を返すにはどう書くのがよいでしょうか?
コメント1件

223
222[sage]   投稿日:2013/08/16 00:00:00
(defun trec (rec &optional (base #'identity))
  (labels
    ((self (tree)
       (if (atom tree) (if (functionp base) (funcall base tree) base)
           (funcall rec tree
                    #'(lambda () (self (car tree)))
                    #'(lambda () (if (cdr tree) (self (cdr tree))))))))
    #'self))

224
222[sage]   投稿日:2013/08/16 00:00:00
(defun find-if-rec (fn lst)
  (funcall (trec
            #'(lambda (obj left right) (or (funcall left) (funcall right)))
            #'(lambda (leaf) (and (funcall fn leaf) leaf)))
           lst)

(find-if-rec #'oddp '((2 4 6 8) (2 1 3)))
;=> 1

出来ました

225
デフォルトの名無しさん[sage]   投稿日:2013/08/16 00:00:00
いきなりそっちにいくのか(困惑)

226
222[sage]   投稿日:2013/08/16 00:00:00
そっち、とはもっと単純な方法があったということでしょうか

227
デフォルトの名無しさん[sage]   投稿日:2013/08/16 00:00:00
素直に書くと(まあいっしょだけど)初学者的にはたぶんこうなるだろうと思ってたけど
(defun find-if-rec (fn tree)
(cond
((null tree) nil)
((atom tree) (when (funcall fn tree) tree))
(t (or (find-if-rec fn (car tree))
(find-if-rec fn (cdr tree))))))

いきなり抽象度がひとつ上のtrecが出てきたので

228
デフォルトの名無しさん[sage]   投稿日:2013/08/20 00:00:00
ちょっとお尋ねします。arrayの一部を新たにarrayを作らずに切り出すことってできないんでしょうか?
新たにnewしないで、もとのarrayを直接参照するsubseqを探しているんですが、そういったものはないんでしょうか?

229
デフォルトの名無しさん[sage]   投稿日:2013/08/20 00:00:00
元のリストが(0 1 2 3 4)だったとして、これはデータ構造を正確に表すと
(0 . (1 . (2 . (3 . (4 . nil)))))となっている。
(setq lst (list 0 1 2 3 4))
(subseq lst 1 4)
とすると
(1 2 3)が帰ってくるが、このデータ構造は
(1 . (2 . (3 . nil)))である。
この構造は元の構造に含まれていないため、切り出すということができない。

230
デフォルトの名無しさん[sage]   投稿日:2013/08/20 00:00:00
と書いてみたがarrayの話か・・
コメント1件

231
デフォルトの名無しさん[sage]   投稿日:2013/08/20 00:00:00
あれ〜?
コメント1件

232
デフォルトの名無しさん[sage]   投稿日:2013/08/20 00:00:00
>230
レスありがとうございます。そうなんです、arrayの話なんです。

>231
(^^;

とりあえず、自己解決しました。
displaced-arrayでいけそうです。make-arrayのオプションとは、盲点でした。

233
デフォルトの名無しさん[sage]   投稿日:2013/08/21 00:00:00
緑のモンスターの本買いました。
コーディングは適当なエディタに書いてclispにペースト実行ってやってるんですが、もっといいやり方ないですか?
Emacsにslime?がいいのですかね?
コメント1件

234
デフォルトの名無しさん[sage]   投稿日:2013/08/22 00:00:00
鉄板→emacs&slime
コメント1件

235
デフォルトの名無しさん[sage]   投稿日:2013/08/22 00:00:00
>233
slime の環境は quicklisp というライブラリ管理ツールを使って簡単にできるよ
コメント1件

236
デフォルトの名無しさん[sage]   投稿日:2013/08/22 00:00:00
>234
おお、やっぱりこの組み合わせが1番なんですね。
本読んでると特にそのあたりの記載がなくて、最初はTerminalからclisp立ち上げて直に長文コード打ってました。(コピペで、ですが)
emacsでコード書いて保存してslimeで実行って感じがデファクトなんでしょうか?

>235
quicklisp初めて知りました。これは管理が楽になりそうでいいですね。
私の環境はMacなのでbrewでclisp入れてますが、slime使うなら管理も含めてquicklispがいいですね。移行します。
ご教示ありがとうございました。

237
デフォルトの名無しさん[sage]   投稿日:2013/08/23 00:00:00
(defun add (x y)
(+ x y))←ここでctrl+xを押し、ctrl+eを押すと関数が定義される

(add 8 5)←ここでctrl+xを押し、ctrl+eを押すと13が表示される

書きながらどんどん実行していく。
コメント1件

238
236[sage]   投稿日:2013/08/23 00:00:00
>237
便利過ぎて鼻血が出ました。
これでLisp本がさくさく進められます!!ありがとうございました!

239
デフォルトの名無しさん[sage]   投稿日:2013/08/23 00:00:00
sbcl 1.0.55.0でquicklispからcxml-stpを使おうとしたんだけど、
次がコンパイルできないんですが同じ症状の人いますか?

(eval-when (:compile-toplevel :load-toplevel :execute)
(ql:quickload :cxml-stp))

240
デフォルトの名無しさん[sage]   投稿日:2013/09/02 23:22:36
CommonLisp初心者なんですけど
Clojureの->みたいのを実装したいのですがどうやったら綺麗に書けますか?

想定してる動作としては
(-> '(10 20 30) (mapcar #'1+ _) car 1+)
;; => 12

書いてみたのですがあと一段階…
(defmacro -> (&amp;body forms)
``(let* ,(mapcar #'(lambda (f) (if (symbolp f) (list '_ (list f '_)) (list '_ f))) ',forms)
_))
;; => (LET* ((_ '(10 20 30)) (_ (MAPCAR #'1+ _)) (_ (CAR _)) (_ (1+ _))) _)

241
デフォルトの名無しさん[sage]   投稿日:2013/09/03 00:16:45
(defun build-> (forms)
(reduce (lambda (acc form)
(if (listp form)
`(,(car form) ,acc ,@(cdr form))
(list form acc)))
(cdr forms)
:initial-value (car forms)))

(defmacro -> (&body forms)
`(progn ,(build-> forms)))

間違ってたらめんご
コメント1件

242
デフォルトの名無しさん[sage]   投稿日:2013/09/03 00:25:33
マクロ部分はこっちに直して
(defmacro -> (&body forms)
(build-> forms))

243
デフォルトの名無しさん[sage]   投稿日:2013/09/03 00:40:36
>241
thx. やっぱ愚直に書くべきなのかな

M.Hiroi's Home Pageに載ってるlet*の実装を参考にして
書き直したら一応解けたかも?
(defmacro -> (&body forms)
(let ((_ (if (symbolp (car forms)) (list (car forms) '_) (car forms))))
(if (null (cdr forms))
`(let ((_ ,_)) _)
`(let ((_ ,_)) (-> ,@(cdr forms))))))

244
デフォルトの名無しさん[sage]   投稿日:2013/09/03 00:56:02
挿入する場所を選べんのかそれならこうだ
(defun build-> (forms)
(reduce (lambda (acc form)
(if (listp form)
(substitute acc '_ form)
(list form acc)))
(cdr forms)
:initial-value (car forms)))

245
デフォルトの名無しさん[sage]   投稿日:2013/09/03 20:23:25
githubのclojure/src/clj/clojure/core.cljにある->のソースを参考にしたら、こんなんなった。
(defmacro -> (x &amp;body forms)
(cond ((null forms)
x)
((null (cdr forms))
(let ((first (car forms)))
(if (consp first)
`(,(car first) ,x ,@(cdr first))
`(,first ,x))))
(t
`(-> (-> ,x ,(car forms)) ,@(cdr forms)))))

246
デフォルトの名無しさん[sage]   投稿日:2013/09/03 20:26:17
->>は、こんなんなった。
(defmacro ->> (x &body forms)
(cond ((null forms)
x)
((null (cdr forms))
(let ((first (car forms)))
(if (consp first)
`(,(car first) ,@(cdr first) ,x)
`(,first ,x))))
(t
`(->> (->> ,x ,(car forms)) ,@(cdr forms)))))

247
デフォルトの名無しさん[sage]   投稿日:2013/09/03 22:44:20
>222
大分おそくなったちゃったけど、こんなのはどうだろう。

(some (lambda (lst) (find-if #'oddp lst)) '((2 4 6 8) (2 1 3)))
=> 1

248
デフォルトの名無しさん[sage]   投稿日:2013/09/05 21:25:01
someとfind-ifって同じ?

249
デフォルトの名無しさん[sage]   投稿日:2013/09/05 22:44:31
ざっくり言うと、find-ifはpredが非nilとなる`要素'を返す。
一方、someはpredが非nilとなる要素が存在したら、`非nil'を返す。

(find-if #'oddp '(2 4 6 1 8)) => 1
(some #'oddp '(2 4 6 1 8)) => T

250
デフォルトの名無しさん[sage]   投稿日:2013/09/07 23:29:00
Maximaで黄金比を計算しようと思って
(%i1) cf((1+sqrt(5))/2), cflength=3;
と入力したら
(%o1) [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2]
と表示されてしまいます。
これって最後は1にならなきゃおかしいですよね。
バグですか?
コメント1件

251
デフォルトの名無しさん[sage]   投稿日:2013/09/08 11:06:49
>250
仕様です。
その式、マニュアルにそのまま出てます。
tp://maxima.sourceforge.net/docs/manual/en/maxima_29.html

252
デフォルトの名無しさん[sage]   投稿日:2013/09/08 15:22:56
仕様というか、例としてはそうなっているけど、なぜ2にしているかの理由は書いてないんじゃね?

253
デフォルトの名無しさん[sage]   投稿日:2013/09/11 04:26:19
clojureのthreading macroってquicklispにあったりしませんか?
threadなどで検索をかけてもこれといってひっかかるものがありません
コメント1件

254
デフォルトの名無しさん[]   投稿日:2013/09/11 08:01:21
>253
threading macroって -> と ->> のことでいいのかな。
それなら以下のパッケージに含まれているようです。

quickdocs.org/cl-arrows/
quickdocs.org/backports/
コメント1件

255
デフォルトの名無しさん[sage]   投稿日:2013/09/11 23:19:11
>254
ありがとうございます
clojureと挙動が少し違いましたがcl-arrowsが使えそうです
backportsも試してみたかったのですがquickloadがコケるのであきらめました

256
デフォルトの名無しさん[sage]   投稿日:2013/09/12 22:08:33
quickutilにも、->と ->>があったらいいな。

257
デフォルトの名無しさん[sage]   投稿日:2013/09/13 01:42:41
CLにclojureの#()やschemeのcutのようなものってありますか?
コメント1件

258
デフォルトの名無しさん[sage]   投稿日:2013/09/13 05:38:54
Lisperはこの世のごみ屑
今すぐ消えるべし
コメント1件

259
デフォルトの名無しさん[sage]   投稿日:2013/09/13 07:32:11
>258
俺は特定のLisperにネタミがあるがおまえは一体何が原因でそんなことを言ってるんだ?
コメント1件

260
デフォルトの名無しさん[sage]   投稿日:2013/09/13 07:59:09
そういうbotなんだよ

261
デフォルトの名無しさん[]   投稿日:2013/09/13 19:03:33
>257
CLの規格には無いけれど、
ユーティリティライブラリの ARNESI に SHARPL-READER というリーダーマクロがあります。

common-lisp.net/project/bese/docs/arnesi/html/api/function_005FIT.BESE.ARNESI_003A_003ASHARPL-READER.html

こんな風に使うみたい。

(arnesi:enable-sharp-l-syntax)
(mapcar #L(* !1 !2) '(1 2 3) '(4 5 6)) ;=> (4 10 18)
コメント1件

262
デフォルトの名無しさん[sage]   投稿日:2013/09/13 20:58:10
>259
ああいう人は心の病気なんだから専門家に丸投げして関わらない方がいいとおもうなー

263
デフォルトの名無しさん[sage]   投稿日:2013/09/14 14:56:52
>261
さんくす!

しかしこういうのが外部にしかないということはCL書く人は毎回lambdaを書くということなんでしょうか

264
デフォルトの名無しさん[sage]   投稿日:2013/09/14 17:51:46
Land of Lispの最難関はどう考えても環境構築

265
デフォルトの名無しさん[sage]   投稿日:2013/09/14 22:34:58
Win8+CLISP+emacs+SLIMEでやってる人っていますか?
CLISPとemacsのインストール後emacsのsite-lisp(?)フォルダにslimeをリネームしてコピーまではしたもののその後がわかりません。
ユーザーフォルダの奥の方にあるinit.elがWindowsではemacsの設定として扱われる、ということまでは調べました。

266
デフォルトの名無しさん[sage]   投稿日:2013/09/14 23:05:11
そのレベルで詰まってるなら
lisp box使ってみたら?
http://common-lisp.net/project/lispbox/
win8で動くかわからないけどね
コメント1件

267
デフォルトの名無しさん[sage]   投稿日:2013/09/15 02:44:41
double-float の simple-vector が作れないのは何で?
ついでに float の simple-vector に
double-float の値、例えば 0.0d0 を代入できてしまうのは何で?


268
デフォルトの名無しさん[sage]   投稿日:2013/09/15 03:05:52
(make-array 3 :element-type 'double-float)
で作れるけど

double-floatはfloatのsubtypeだから
(subtypep 'double-float 'float)
(subtypep 'single-float 'float)
(subtypep 'double-float 'single-float)
(typep 1.0 'float)
(typep 1d0 'float)
(typep 1.0 'double-float)
(typep 1d0 'single-float)

269
デフォルトの名無しさん[sage]   投稿日:2013/09/15 10:44:55
gaucheとguileの違うところを教えてください。
コメント1件

270
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/09/15 11:02:18
>269
ここは Common Lisp スレだよ。

271
デフォルトの名無しさん[sage]   投稿日:2013/09/15 12:38:54
* (type-of (make-array 3 :element-type 'double-float))
=> (SIMPLE-ARRAY DOUBLE-FLOAT (3))

* (type-of (make-array 3 :element-type t))
=> (SIMPLE-VECTOR 3)
* (type-of (make-array 3 :element-type t :initial-element 0.0d0))
=> (SIMPLE-VECTOR 3)
* (type-of (apply #'vector '(1 1.0d0 "42" #p"tmp.lisp")))
=> (SIMPLE-VECTOR 4)

272
デフォルトの名無しさん[]   投稿日:2013/09/15 12:47:28
sbclとcclでは上のようになりました。
しかし、clispでは
[1]> (type-of (make-array 3 :element-type 'double-float))
(SIMPLE-VECTOR 3)
となります。
一体全体どうゆうこったい??
コメント1件

273
デフォルトの名無しさん[sage]   投稿日:2013/09/15 13:07:50
型指定の類は最適化のヒントでしかないから、処理系によっては無視される。
clisp はあんまり最適化してくれない処理系。
コメント2件

274
267[sage]   投稿日:2013/09/15 13:25:28
ええと sbcl だと

(describe (make-array 3 :element-type 'double-float))
=>
#(0.0d0 0.0d0 0.0d0)
[simple specialized vector]

で simple vector でないみたいで

(svref (make-array 3 :element-type 'double-float) 1)

でエラーになってしまう。大量の代入をすると float なら cと遜色ないんだけども。
double-float だと2-3倍時間がかかるので気になっている

つまるところ >273 が答えってことかな
コメント1件

275
デフォルトの名無しさん[]   投稿日:2013/09/15 13:30:14
>272
要素型が t (任意のオブジェクト) 以外の simple-vector は存在しません。

> The type of a vector that is not displaced to another array, has no fill
> pointer, is not expressly adjustable and is able to hold elements of any
> type is a subtype of type simple-vector.
http://clhs.lisp.se/Body/t_smp_ve.htm

要素型が特定されていると simple-vector の定義を満たしません (SBCL, CCLの場合)。

CLISPでは :element-type 'double-float という型情報は無視されて、要素型が t の
ベクタが作られています(理由は>273の通り)。なので type-of は (SIMPLE-VECTOR 3)
を返しますが、「要素型が double-float の simple-vector」が作られているわけで
はありません。

CLISP> (array-element-type (make-array 3 :element-type 'double-float))
;=> T
SBCL> (array-element-type (make-array 3 :element-type 'double-float))
;=> DOUBLE-FLOAT

276
デフォルトの名無しさん[sage]   投稿日:2013/09/15 15:27:22
ありがとうございます!
simple-vectorと型要素の関係がすっきりしました。
clispがあまり最適化してくれない、というのも勉強になりました。

277
デフォルトの名無しさん[]   投稿日:2013/09/15 16:04:58
macroを勉強したいんですがon lispとlolがやはり定番なんでしょうか?

278
デフォルトの名無しさん[sage]   投稿日:2013/09/15 16:25:38
LOLでは「マクロを構築する上で、良いリファレンスやチュートリアルはほとんどない。Paul GrahamのOn Lispはその例外の1つである。」って書いてあるね

279
デフォルトの名無しさん[sage]   投稿日:2013/09/15 19:59:38
>274
> でエラーになってしまう。大量の代入をすると float なら cと遜色ないんだけども。
> double-float だと2-3倍時間がかかるので気になっている
ここん所, 今一, 意味不明だけど解決したのかな?

# (declare (optimize (spped 3) (safty 0) (debug 0))) とかやれば
# 真面目なコンパイラなら (aref foo bar) は inline 展開なんじゃね?

280
デフォルトの名無しさん[sage]   投稿日:2013/09/16 19:11:10
>266
動きました、ありがとうございます。
これでいちいちTerminalに一文字も間違えないように打つことから解放されました。
Land of Lisp もサクサク進められそうです。

ところでこのlispboxはClozureという処理系を利用していると書いてありましたが、CLISPと何か違いはあるのでしょうか?
Land of LispではCLISPを前提としているので。
コメント1件

281
デフォルトの名無しさん[sage]   投稿日:2013/09/17 01:09:39
common lispで名前空間にユーザー側で別名をつける機能ってありますか?
clojureみたいに
(require 'alexandria :as 'alex)
alex:alist-plist
のように機能を探してます。

>280
land of lispの範囲だと少なくともサーバのソケット周りが違うんじゃないかな、clisp使うか、ningleとかusocket使ってサーバ書き直すとかしなきゃいけないじゃない
本持ってないけど、サンプルコード感じだと他はclosure clでも動くんじゃない?
コメント1件

282
デフォルトの名無しさん[]   投稿日:2013/09/17 06:55:03
>281
そういう機能は無いけど、rename-package と package-nicknames を使えば
定義済のパッケージにあとから別名を追加できます。
(package-names の戻り値のリストに新しい名前を cons したものを rename-package の第三引数にする)。

逆引きCommon Lispに書いてみたので宜しければどうぞ。
http://tips.lisp-users.org/common-lisp/index.cgi?%E3%83%8B%E3%83%83%E3%8...
コメント1件

283
デフォルトの名無しさん[sage]   投稿日:2013/09/17 09:01:55
>282
ありがとうございます。
例示していただいたコードをSBCLで使うと、
sb-ext:symbol-package-locked-errorで怒られるのでちょっと変更しました。

(defun add-nickname% (nickname package)
(rename-package package
package
(cons nickname (package-nicknames package))))

(defun add-nickname (nickname package)
(sb-ext:unlock-package package)
(unwind-protect (add-nickname% nickname package)
(sb-ext:lock-package package)))
----------------------------

* (package-nicknames :alexandria)
-> ()
* (package-nicknames (add-nickname :al :alexandria))
-> ("AL")
コメント1件

284
デフォルトの名無しさん[]   投稿日:2013/09/17 17:59:12
>283
ありゃ。確認不足でしたすみません。

次のような記事もありましたが、壊れていて動きませんでした。
こちらはリーダーマクロで実現しようとされているようです。

common-lisp - Common LispでClojure-likeなnicknameを使いたい話 - Qiita [キータ]
http://qiita.com/zptmtr/items/22f713753a026279c6f3
https://gist.github.com/zeptometer/4373557

処理系依存ですが、SBCLには add-package-local-nickname という関数がありますね。
http://www.sbcl.org/manual/#Package_002dLocal-Nicknames
コメント1件

285
デフォルトの名無しさん[sage]   投稿日:2013/09/17 19:02:41
Lisperはこの世のごみ屑
早く死滅せよ

286
デフォルトの名無しさん[sage]   投稿日:2013/09/18 00:56:24
cl-annotと組み合わせてadd-nicknameを使ってみます。
(cl-annot:enable-annot-syntax)

(cl-annot:defannotation nickname (nick quickload-form)
(:arity 2 :inline t)
`(add-nickname ,nick (car ,quickload-form)))

@nickname :al
(ql:quickload :alexandria)

287
デフォルトの名無しさん[sage]   投稿日:2013/09/19 15:57:45
cl-dbiでtimestamp型が読み込めないよう

288
デフォルトの名無しさん[sage]   投稿日:2013/09/19 16:32:48
common lisp の room 関数は 結果を標準出力に出力しますが、標準出力ではなく変数にセットすることは可能でしょうか?
コメント1件

289
デフォルトの名無しさん[]   投稿日:2013/09/19 17:26:51
>288
そういう場合 *standard-output* を文字列出力ストリームに一時的に差し替えてやれば、
標準出力への書き込みを文字列として取得できます。

(let ((*standard-output* (make-string-output-stream)))
(room)
(get-output-stream-string *standard-output*))

with-output-to-string マクロを使って簡潔に:

(with-output-to-string (*standard-output*) (room))
コメント1件

290
デフォルトの名無しさん[]   投稿日:2013/09/19 19:38:15
>284
おかげさまで取得できました。

ありがとうございました。

291
デフォルトの名無しさん[]   投稿日:2013/09/19 19:39:46
>289
番号まちがえました。

おかげさまで取得できました。

ありがとうございました。

292
デフォルトの名無しさん[sage]   投稿日:2013/09/20 20:43:58
Linuxで環境構築したらclisp,emacs,slimeをインストールするだけで終わった
Land of LispからLispを始める人は絶対Linuxでやるべきかと

293
デフォルトの名無しさん[sage]   投稿日:2013/09/20 21:49:57
graphvizとかも必要になるから断然Linuxのがいいよ

294
デフォルトの名無しさん[sage]   投稿日:2013/09/21 00:29:53
LispプログラマはMacよりLinuxなイメージ。
とはいえ現実にはアプリを走らせる環境と同じOSで開発するのが一番リスク少ないんだが。

295
デフォルトの名無しさん[sage]   投稿日:2013/09/21 14:39:52
land of lispを読んで環境構築しようと思ったらいつのまにかinit.elを一日中いじっていた
何をいっているかわからねえと思うが

296
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/09/21 15:20:00
よくあること。

297
デフォルトの名無しさん[sage]   投稿日:2013/09/21 17:28:12
環境構築は断然 Linux か Mac がお勧め
Win なら、VMWare Player 入れて Linux の OS から入れなおしても
充分お釣りがくるよ

298
デフォルトの名無しさん[sage]   投稿日:2013/09/21 17:28:38
今CLでマルチスレッドをやろうとしたらBordeaux-threadsなんだろうか。
ちなみに処理系はSBCL on Linux

299
デフォルトの名無しさん[sage]   投稿日:2013/09/22 10:52:36
SBCL 専用でいいんだったら, SBCL のスレッド直接使えばいいと思う

300
デフォルトの名無しさん[sage]   投稿日:2013/09/27 01:54:59
cygwin導入すらばいいだけだろ

301
デフォルトの名無しさん[sage]   投稿日:2013/09/27 03:39:33
こんなところでスラバヤ殿下に会えるとは…

302
デフォルトの名無しさん[sage]   投稿日:2013/10/02 17:59:30
clhsとcltl2の関係ってどうなってんの?教えて偉い人
コメント1件

303
デフォルトの名無しさん[sage]   投稿日:2013/10/02 19:22:06
clhs は正式標準で, cltl2 は標準になる前に出版されて,
cltl2 出版後の改定が反映されてないだけだと認識してるが...

304
デフォルトの名無しさん[sage]   投稿日:2013/10/02 21:03:41
横から口を挟んで申し訳ないのだけれどclhsって何ですか?

305
デフォルトの名無しさん[sage]   投稿日:2013/10/02 21:17:00
Common Lisp Hyper Sex

306
デフォルトの名無しさん[sage]   投稿日:2013/10/03 07:40:05
>302
WikiのX3J13(http://en.wikipedia.org/wiki/X3J13)の中に、まんま
Relation to "Common Lisp the Language"
という項目の説明があります。
コメント1件

307
デフォルトの名無しさん[sage]   投稿日:2013/10/03 07:53:32
clhshs

308
デフォルトの名無しさん[sage]   投稿日:2013/10/03 19:40:18
>306
ありがとうございます読んでみます

309
304[sage]   投稿日:2013/10/03 22:50:20
なるほど Common Lisp HyperSpecのことでしたか

310
デフォルトの名無しさん[sage]   投稿日:2013/10/05 13:20:12
Wikipedia を Wiki と略しちゃう男の人って…

311
デフォルトの名無しさん[sage]   投稿日:2013/10/09 18:34:02
質問させてください。

「Land of LIsp」で最近Common Lispをはじめました。
この本の中で除算について以下のような記述がありました。
↓↓↓↓↓↓↓↓↓↓↓↓
4を6で割ると、答えは少数0.66666…じゃないかと思うかもしれない。
除算関数はかわりに、有理数を返すんだ。

(省略)

引数に浮動小数点が含まれていると、結果は異なったものになる。
>(/ 4.0 6)
0.6666667

先に述べたように、小数点を含んだ数(4.0)は計算を汚染し、結果も少数になるんだ。
↑↑↑↑↑↑↑↑↑↑↑↑

引数に浮動小数点が含まれている際の除算の挙動は理解できたのですが、
最終行の「小数点を含んだ数(4.0)は計算を汚染し」の
「汚染」の意味がよくわかりません。

プログラミングにおいて「汚染」とはどのような意味で使われているのでしょうか?
コメント2件

312
デフォルトの名無しさん[sage]   投稿日:2013/10/09 18:40:03
>311
Land of Lispは読んでなくて手元にCommon Lispはないけど...

(/ 4 6) = 2/3
は正確な値だけど
(/ 4.0 6) = 0.66666....
は何らかの丸めの入る近似値

有理数で計算しているうちは正確な値で結果が得られるけど
少数が混じると近似値になってしまうということではなかろうかと存じます。
コメント1件

313
312[sage]   投稿日:2013/10/09 18:49:23
読み返したら、あまり、回答になっていなかったか。

ここでいう「汚染」というのは、上記のこれ以降近似値という
質の低いデータになってしまうということだけど、
確立されたプログラミングの専門用語ではないと思う。

Webプログラムとかでデータにユーザが入れた値が入る等
安心して使えず、そのデータから派生したデータを使う場合
セキュリティに気をつけなくてはいけないデータになることを
汚染という使い方をしたのを見たことがある。

314
デフォルトの名無しさん[sage]   投稿日:2013/10/09 18:55:09
>311
浮動小数点数のいろんな問題を含めて汚染といっているのだろうけど、
代表的なもののひとつに桁落ちというのがあって、
(x+1/N)という実数をN回足し合わせれば必ず(N*x+1)になると期待してしまうけど、
浮動小数点数の場合、xとNがそれぞれ大きい場合にはN*xになってしまう場合があったりする。
Cなんかで数値計算をやる場合には、浮動小数点演算の特性を頭に叩き込むのがまず基本だけど、
Lispの場合は有理数が使えるんだから、速度を気にしない場面では有理数を使うべきってことではなかろうか。
コメント1件

315
デフォルトの名無しさん[sage]   投稿日:2013/10/09 19:05:48
有理数と浮動小数点を計算すると浮動小数点になる
全部が有理数なら計算結果も有理数で得られるが、たったの1個でも浮動小数点が混ざっていると、計算結果は浮動小数点になってしまう
安全な食材の中に、たった1つでも有毒なものが混ざっていると、結果できた料理は有毒なものになってしまう様に喩えて、汚染とかいう
コメント2件

316
311[sage]   投稿日:2013/10/09 20:34:03
>312, 313
ありがとうございます。
>少数が混じると近似値に〜
正確な値を清浄ととらえた上で、近似値を"汚染"と表現しているのですね。

「汚染」というのは、確立されたプログラミングの専門用語ではなく、
文脈によってニュアンスが変わると把握できました。

>314
ありがとうございます。
>桁落ち
なるほど。桁落ちにより誤差が発生することがあるので"汚染"と表現しているのですね。
ためになります。

>315
ありがとうございます。
>安全な食材の中に、たった1つでも有毒なものが混ざっていると〜
この比喩で、納得できました。

このように考えると、313さんが教えてくれた
「Webプログラムとかで〜」という用法とも、大きなズレは感じませんね。

"汚染"というのは、正しい状態を前提として不正な状態になることをいうのかなと
みなさんにいただいた内容をもとに自分なりに結論してみました。

また、何かあったら質問させてください。ありがとうございました。

317
デフォルトの名無しさん[sage]   投稿日:2013/10/10 00:40:52
汚染っていうのはヘンだろ。
コメント1件

318
デフォルトの名無しさん[sage]   投稿日:2013/10/10 00:43:25
値が誤差に汚され染められる

319
デフォルトの名無しさん[sage]   投稿日:2013/10/10 00:48:22
英語の contamination なんだろうけど。

純粋だったものが汚されるってニュアンスかな。

320
デフォルトの名無しさん[sage]   投稿日:2013/10/10 00:48:56
変かどうかは分からないけど、>315の言うような意味だと思うよ。
少しでも混ざると全体がそうなってしまう。一度混ざると取り除けない。

321
デフォルトの名無しさん[sage]   投稿日:2013/10/10 01:11:08
日本語にするとおかしいね。
haskell界隈で使われる純粋と不純ってのも、日本語ではどうにも違和感がある。
不純ってのは、日本語の文脈では悪い意味でしか使われないから。
コメント1件

322
デフォルトの名無しさん[sage]   投稿日:2013/10/10 01:46:24
>317
>"汚染"というのは、正しい状態を前提として不正な状態になることをいうのかなと

この理解が変でしょ。
「正しい」状態とかじゃなくて、ある種のデータはこういう内部表現をされて
います、ってそれだけのことだから。

323
デフォルトの名無しさん[sage]   投稿日:2013/10/10 01:55:36
再帰関数で相互に関数を呼んでいる場合に
ファイルをロードするとエラーメッセージ(片方の関数が存在しないと言われる)
が出てしまうのはどうやったら消えてくれるのでしょうか
動くので問題ないのですがエラーが気になるのです

324
デフォルトの名無しさん[sage]   投稿日:2013/10/10 03:48:38
あっあっ有理数汚染されちゃうっ誤差入っちゃうよぉ…

325
デフォルトの名無しさん[sage]   投稿日:2013/10/10 09:20:18
>321
英語だって否定辞付きだろ。どうやって肯定的な意味に使うんだ。
コメント1件

326
デフォルトの名無しさん[sage]   投稿日:2013/10/10 10:26:12
CLで一般的かどうか知らないけど、Schemeにはは「正確数」と「非正確数」があって、
非正格数を演算した結果は非正格数になる。

327
デフォルトの名無しさん[sage]   投稿日:2013/10/10 11:47:50
正確に言えや

328
デフォルトの名無しさん[sage]   投稿日:2013/10/10 11:55:49
>325
あの人ら、不純を悪い意味じゃなくて非純粋の意味でバンバン使うじゃん
(setq *x* (1+ *x*))
(nreverse ...)
これ全部不純な計算ね
でも、日本語で不純っていわれると、何かよこしまな悪い考えを咎められているようにも聞こえるw
コメント1件

329
デフォルトの名無しさん[sage]   投稿日:2013/10/10 13:10:02
その式はよこしまな悪い考えだと思う

330
デフォルトの名無しさん[sage]   投稿日:2013/10/10 20:52:47
>328
あの人らは「んなもん使うなぼけ !!」って意思を込めて
「不純」って使ってるのかと思った。

331
デフォルトの名無しさん[sage]   投稿日:2013/10/10 20:59:45
なんで不純を理解できないんだ
前後の文と雰囲気から分かるだろ
コメント1件

332
デフォルトの名無しさん[sage]   投稿日:2013/10/10 21:10:19
自由変数の捉え方の問題では?
*VARIABLE* は,
「宣言した時点で新しい評価環境が発生してる」
と, 考えると別に気にならないけど
(let* (tmp)
(setf tmp (op1 ...))
(othe-opx tmp)
(setf tmp (op2 ...))
的な, 連鎖で状態を変え続けられる方が気持ち悪い

333
デフォルトの名無しさん[sage]   投稿日:2013/10/11 02:31:57
>331
意味的に何を言いたいかは充分すぎるほど分かるけど、感覚的には全くわからんね
ああ、これまたどうしようもなく下手くそな英訳の濫用だなあとしか思わん
コメント1件

334
デフォルトの名無しさん[sage]   投稿日:2013/10/11 03:45:20
俺は感覚的にもよくわかるけどな
煽りじゃないけど、もっと適切な言葉があるなら知りたいから教えて

335
デフォルトの名無しさん[sage]   投稿日:2013/10/11 11:47:03
副作用

336
デフォルトの名無しさん[sage]   投稿日:2013/10/11 18:33:52
副作用ってのも違和感のある表現だが英語だとどうなってるの?

337
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/10/11 18:35:40
side effects

338
デフォルトの名無しさん[sage]   投稿日:2013/10/11 18:38:29
副作用や不純に違和感を覚えるってただ慣れてないだけだろ
何にでも突っ込みたい人なのかな
コメント1件

339
デフォルトの名無しさん[sage]   投稿日:2013/10/11 18:44:59
>333
ばかなんだね
ふう

340
デフォルトの名無しさん[sage]   投稿日:2013/10/11 21:09:23
>338
副作用はもうなれたけど、コンピュータ系のcontextで聞き出した頃は、
薬とかの副作用っていう、「悪いもの」、「必要外のもの」的な
意味合いを感じて違和感があった。

というか、むしろ、これで気づいた。副作用なんて、他にあんまり用いないし。

ただ、慣れと言われればそれまでだよね。
コメント1件

341
デフォルトの名無しさん[sage]   投稿日:2013/10/11 21:19:11
東山水上行

342
デフォルトの名無しさん[sage]   投稿日:2013/10/11 23:37:31
「低レベル」とかも別に悪い意味じゃないよねぇ。

343
デフォルトの名無しさん[sage]   投稿日:2013/10/12 04:36:52
いつまでも訳された日本語で考えてないで英語本来の意味で考えましょう

344
デフォルトの名無しさん[sage]   投稿日:2013/10/12 04:38:31
文脈次第

345
デフォルトの名無しさん[sage]   投稿日:2013/10/12 04:45:30
英語本来の?!
なにいってんだか
概念に日本語も英語もない
逆に英語でも日本語でも
文脈上の意味、ないし定義から離れて語素から意味を類推するというアホーなことをすることが問題。
どうも言葉自体になにかしら本来の意味があるなんて思っているやからが何人か書き込んでるな

LISP使いとしては、とっても恥曝しだぞ
コメント1件

346
デフォルトの名無しさん[sage]   投稿日:2013/10/12 09:28:06
>340
「副作用」って表現は関数型の言語以外では今でも見かけない気がするが
コメント2件

347
デフォルトの名無しさん[sage]   投稿日:2013/10/12 09:33:12
新しい語義を翻訳する場合も、新しい語義として割り当てる努力は必要

348
デフォルトの名無しさん[sage]   投稿日:2013/10/12 09:56:36
>346
そこらへんのプログラマは使ってなくても、標準規格における重要な用語で、
「副作用完了点」とかあるから。

349
デフォルトの名無しさん[sage]   投稿日:2013/10/12 14:26:15
>345
英語では違和感ないのに、日本語に訳した言葉に違和感があると言ってるやつに対して言ってるだけだが?
LISPの前にまず英語と日本語勉強しろよ(笑)
コメント1件

350
デフォルトの名無しさん[sage]   投稿日:2013/10/12 14:32:06
>349
わかってないのにレスするな低脳君
馬鹿はおれ、嫌いなの
コメント1件

351
デフォルトの名無しさん[sage]   投稿日:2013/10/12 14:37:56
>350
指摘が全くもって的外れなの気付かないのかな?おバカさんなのかな?
コメント1件

352
デフォルトの名無しさん[sage]   投稿日:2013/10/12 14:50:31
>351
だから君にはわからんって
偏差値60以下だったろ?
レスするなよ、馬鹿は嫌いなの
コメント1件

353
デフォルトの名無しさん[sage]   投稿日:2013/10/12 14:58:47
>352
そんな低い偏差値の大学に通われていたのですか?
文脈の違いにすら気付かずに恥ずかしいレスをしてしまう程度なので仕方が無いですね
感情論でしか語れなくまともに議論すらできないお馬鹿さんはどちらでしょうか?
偏差値コンプレックスのお馬鹿さんは黙ってろよ

354
デフォルトの名無しさん[sage]   投稿日:2013/10/12 15:00:55
まずは朝型の生活にな

355
デフォルトの名無しさん[sage]   投稿日:2013/10/12 16:06:29
Amazonで「よこしまなきもち」で検索したらいやん
コメント1件

356
デフォルトの名無しさん[sage]   投稿日:2013/10/12 16:12:11
折角の休みなのに喧嘩すんなって

357
デフォルトの名無しさん[sage]   投稿日:2013/10/12 18:20:38
WindowsのLisp開発環境でお勧めはなんでしょうか

358
デフォルトの名無しさん[sage]   投稿日:2013/10/12 21:17:16
1.ちょっとLispを触ってみたい、とかならLisp Boxがとっつきやすいのではないでしょうか。
導入の仕方は検索してみてください。

2.しっかりLispと愛し合うなら、次のリンク先の動画が参考になるはずです。
[Installing Common Lisp, Emacs, Slime &amp; Quicklisp] www.youtube.com/watch?v=VnWVu8VVDbI
コメント1件

359
デフォルトの名無しさん[sage]   投稿日:2013/10/12 22:02:07
>358
lispbox-0.7をインストールしてみました
Lisp環境を効率よく使うのにはEmacsが必須のようでうね・・・
コメント1件

360
デフォルトの名無しさん[sage]   投稿日:2013/10/12 22:20:05
windowsならlispboxとlispcabinet,どっちがいいんだろう?

361
デフォルトの名無しさん[sage]   投稿日:2013/10/12 23:04:59
>346
昔の職場で普通にレビューとかで副作用って言葉使ってたな
関数型言語なんかの厳密な意味の副作用じゃなくて、
モジュールが何か目的以外の悪さしてるんじゃないかとかそんな意味で
コメント1件

362
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/10/13 00:02:39
一般用語としてなら、例えば文字を表示することを目的とした手続きで文字が表示されるのは「作用」で、
何か値が返ってきてもそれはついで (副作用) のことっていうニュアンスになるよね。

だけど、技術用語というものはそういったニュアンスを排除して定義によって意味を確定するものだから、
領域によって定義が異なるとかいうのもそういうものとして受入れるしか仕方ない。
最初に用語を決めるときに慎重に定めるべきではあるけど、後になってわかることだってあるし。

363
デフォルトの名無しさん[sage]   投稿日:2013/10/13 00:12:23
>359
emacsは慣れるまで時間がかかるので、手っ取り早くlispいじりしたいなら、
カッコの対応表示してくれる適当なエディターで、
しこしこlisp書いてみたほうが楽しいかもしれません。
ちなみに、vim派にはslimvがあります。

ああ、そういえば、xyzzyってwindowsだったはずです。

364
デフォルトの名無しさん[sage]   投稿日:2013/10/13 00:45:34
emacsはチュートリアルに少し時間割けばわりかし早く慣れる(気がする)

365
デフォルトの名無しさん[sage]   投稿日:2013/10/13 00:49:53
emacsは好きになるまで2年ぐらいかかった

366
デフォルトの名無しさん[sage]   投稿日:2013/10/13 10:45:04
>361
「薬の副作用」のイメージで考えてる人多いからね。
まあ、薬の副作用自体間違った言葉なんだが。

367
デフォルトの名無しさん[sage]   投稿日:2013/10/13 11:54:13
薬の方の副作用を二次作用って言うことにしよう。

368
デフォルトの名無しさん[sage]   投稿日:2013/10/14 01:28:12
初心者以前の質問で申し訳ないのですが、
Haskell でいう Hoogle, Python でいう公式の library reference のような、
標準で定義されてる関数やパッケージの総覧みたいなものとしては何を利用するのがいいでしょうか?
コメント1件

369
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/10/14 01:48:48

370
デフォルトの名無しさん[sage]   投稿日:2013/10/14 10:55:51
眠くなるのが「副作用」の薬とかは、眠れないという症状がある場合、
副作用もついでに期待して使われたりするぞ。花粉症の抗ヒスタミン剤とか。

371
デフォルトの名無しさん[sage]   投稿日:2013/10/14 11:30:14
風邪はウイルス性だから抗生物質飲んでも治らないけど、
痰を切って喉をスッキリさせることを目的として処方されたり場合もあるしな。

372
デフォルトの名無しさん[sage]   投稿日:2013/10/14 11:38:59
>355
アカウントログイン状態で検索しちまったじゃねぇかwwwwww
この本を検索した人はのこの本にLispとかプログラム関係の本ばっかりの中にシマシマパンツが出てくるようになったらどないすんねんwwww

373
372[sage]   投稿日:2013/10/14 11:40:18
ちなみに期待したのは猫関係の本だった

374
デフォルトの名無しさん[sage]   投稿日:2013/10/14 12:06:55
不純Lisp

375
デフォルトの名無しさん[sage]   投稿日:2013/10/14 13:10:09
>368
次の2つが便利です。
上はプリントアウトして、下はslimeでC-c C-d hで。

* [clqr: Common Lisp Quick Reference](エッチテテピー//clqr.boundp.org/)
* [clhs: Common Lisp Hyper Spec](エッチテテピー//quickdocs.org/clhs/)
コメント1件

376
デフォルトの名無しさん[]   投稿日:2013/10/14 13:18:09
Common Lispで何か作りたいのですが
面白いアイデアてありますか?

377
デフォルトの名無しさん[sage]   投稿日:2013/10/14 13:35:40
http://www.slideshare.net/amachang/ss-9119621
ネット上に転がってるやってみたを習作してみると、要望が来るかもよ

378
デフォルトの名無しさん[sage]   投稿日:2013/10/14 18:04:11
>369
>375
ありがとうございます!

379
デフォルトの名無しさん[]   投稿日:2013/10/18 23:05:03
Mac に SBCL を コンパイル&インストールしています。
しかし途中で警告が出てしまいます。

自分でもネットで調べたりしましたが、この警告がなぜ発生するのかわかりません。(英語力の問題かもしれませんが)
この警告はなぜ発生するのでしょうか。

環境: OS:OS X 10.8.5, SBCL:1.1.12

<警告内容>
$ sudo sh make.sh
.... 途中省略
WARNING! Some of the contrib modules did not build successfully or pass
their self-tests. Failed contribs:"
sb-posix
コメント2件

380
デフォルトの名無しさん[sage]   投稿日:2013/10/18 23:33:44
>379
Mac Ports とか使ったら
コメント1件

381
デフォルトの名無しさん[sage]   投稿日:2013/10/19 00:12:41
>379,380
Brewの方が、Mac Portsに比べて、無関係のものを毎回入れないから楽。
コメント1件

382
デフォルトの名無しさん[]   投稿日:2013/10/19 17:14:01
>380
>381
ありがとうございます。
HomeBrew でインストールしました。

悩んでイライラしていたのが嘘みたいにあっさりインストールできました。
ありがとうございました。

383
デフォルトの名無しさん[]   投稿日:2013/10/22 19:47:20
Common Lispでmysql操作のサイト、書籍
などありますか?

384
デフォルトの名無しさん[sage]   投稿日:2013/10/22 23:29:24

385
デフォルトの名無しさん[sage]   投稿日:2013/10/22 23:43:20
http://blog.8arrow.org/entry/2013/10/22/135427
なんかDB操作のライブラリ作ってるようだ

DBまわりはRailsだなんだと使っていると、migreteとcrudとARぐらいは欲しいなとおもってしまう。
コメント1件

386
デフォルトの名無しさん[sage]   投稿日:2013/10/23 06:20:25
>384

新しいのが、また出来たのかと思ったら、

> DSWM is a fork of StumpWM

じゃん。

http://dss-project.org/?DSS:DSWM:Screenshots

387
372[sage]   投稿日:2013/10/23 14:56:19
>384
WMをワードマスターと読んでしまって涙目
リンク先みるまでWindow Managerとは思わなかった。

clとかでGenericなエディタとかどうやって作るんだろうって思って昔のLispエミュとか見てるのだけど、そういうのにはむいてないよね。(Cursesとかの世話になるって意味ね)
コメント1件

388
デフォルトの名無しさん[sage]   投稿日:2013/10/23 15:20:16
>387
>clとかでGenericなエディタとかどうやって作るんだろうって思って昔のLispエミュとか見てるのだけど、そういうのにはむいてないよね。(Cursesとかの世話になるって意味ね)

その論調だとcursesがC言語で実装されてるから、C言語以外はエディタ作るのに向いていないってことになんじゃね?

389
デフォルトの名無しさん[]   投稿日:2013/10/23 16:16:54
>385
ありがとうございます。
他にないですか?
コメント1件

390
デフォルトの名無しさん[sage]   投稿日:2013/10/23 18:06:41
>389
//clsql.b9.com/
//d.hatena.ne.jp/yuki_neko_nyan/20070901/clsql
//blog.8arrow.org/entry/20120130/1327926575
//www.hackinghat.com/index.php/cl-mysql
コメント1件

391
デフォルトの名無しさん[]   投稿日:2013/10/23 19:02:43
>390
ありがとうございます。

392
デフォルトの名無しさん[]   投稿日:2013/10/25 11:23:11
Common Lispでリズムマシンみたいなものをつくろうとしているのですが、
0.1ミリ秒ほどの分解能があるタイマーって存在するんでしょうか?
コメント2件

393
デフォルトの名無しさん[sage]   投稿日:2013/10/25 12:40:12
OSとか処理系を書かないと答えられないんじゃないか?

それと余計なお世話なんだけど、”Common Lispでリズムマシン”を作ることに意味があるならいいけど、リズムマシンを作ってみたいだけならpuredataとかを検討したほうがいいんでないかい?
コメント1件

394
デフォルトの名無しさん[sage]   投稿日:2013/10/25 15:20:17
>393
すみません
書いてませんでした

処理系はClozure CLで、OSはLinuxです
Windowsでも利用可能なら、そのほうがいいかなという感じです

最終的にMIDIシーケンサに発展させるつもりでおり、その習作という位置付けです
Common Lispを選んだのはシュミですが…
コメント1件

395
デフォルトの名無しさん[sage]   投稿日:2013/10/25 17:24:45
一番ユーザが多いとであろうと思うcommon lispの処理系って何なの?
できれば根拠というかアンケートサイト何かを示してもらえば嬉しいが

396
デフォルトの名無しさん[sage]   投稿日:2013/10/25 17:26:17
   m m
  ( ゚∀゚) カモン
  (  ∩ミ  シュッシュッ
   | ωつ,゙
   し ⌒J

397
デフォルトの名無しさん[sage]   投稿日:2013/10/25 17:29:39
>394
あなたがcommon lispでアプリケーションを書くことに価値を置いているのかD™等のプログラムを書くことに価値を見出しているのかに依って違うんだけど
余りこだわりをこだわりというか邪見を持たずやりたいようにやったほうがいいと思うけどな
わけわかんなくてスマソ

398
デフォルトの名無しさん[sage]   投稿日:2013/10/25 17:31:49
そんなことを知ってどうするっていうんだい。
コメント1件

399
デフォルトの名無しさん[sage]   投稿日:2013/10/25 17:33:08
気にするな
とりあえずチンチンしごけ


   m m
  ( ゚∀゚) イクゾ
  (  ∩ミ  シュッシュッ
   | ωつ,゙
   し ⌒J

400
デフォルトの名無しさん[sage]   投稿日:2013/10/25 17:38:47
 >398
スマヌOSとかによっても違うのに余り意味がないかも知れないな、
俺はSBCLがユーザが多いよな気がしてなんとなくSBCLを選んだのでなんとなく引け目があったんだ

401
デフォルトの名無しさん[sage]   投稿日:2013/10/25 23:46:33
処理系の選び方について
http://cl.cddddr.org/index.cgi?%BD%E8%CD%FD%B7%CF%3A%C1%AA%A4%D3%C...
とか読むと不安が解消するだろうか

ページ内のSBCLってリンク辿ってくとアンケート
http://xach.livejournal.com/271794.html
もある

402
デフォルトの名無しさん[sage]   投稿日:2013/10/26 07:20:28
>392
楽しそう。clojure の overtone みたいなの目指してがんがれ!

403
デフォルトの名無しさん[sage]   投稿日:2013/10/27 11:22:30
>392
http://repmus.ircam.fr/openmusic/home
http://www.doc.gold.ac.uk/isms/lisp/midi/
http://www.youtube.com/watch?v=xzTH_ZqaFKI
参考になるかも

404
デフォルトの名無しさん[]   投稿日:2013/10/31 10:48:15
メモリの取り方の図解のサイト、書籍などございますか?

405
デフォルトの名無しさん[sage]   投稿日:2013/10/31 23:23:27
common lispで、参考になるようなきれいなソースコードとかありませんかね?
コメント1件

406
デフォルトの名無しさん[sage]   投稿日:2013/10/31 23:30:38
最初はポール=グレアムのコードからじゃね?

407
デフォルトの名無しさん[sage]   投稿日:2013/11/01 00:29:05
>405
PAIP が教科書的に美しいよ。あとはlispのwebサーバ hunchentoot もかなり綺麗なコードだった。

408
デフォルトの名無しさん[sage]   投稿日:2013/11/01 01:24:07
LandofLispの絵に惹かれて買ってからちょこちょこ読み進めてるけどCommonLispって使い道あるんだろうか...
半分終わったくらいから気になりだした

409
デフォルトの名無しさん[sage]   投稿日:2013/11/01 01:58:10
pythonやruby使うのと同じように使えばいいんじゃないの?

410
デフォルトの名無しさん[sage]   投稿日:2013/11/01 08:45:31
Common Lisp じゃなきゃいけないって事態はそんなにないと思うけど、
Common Lisp では駄目だって事態もそれほどない。

411
デフォルトの名無しさん[sage]   投稿日:2013/11/01 19:01:32
同じコードを何度か書いたりして、他の言語の抽象化機能に疑問を感じた時?

412
デフォルトの名無しさん[sage]   投稿日:2013/11/01 22:16:19
format使いたい時

413
デフォルトの名無しさん[]   投稿日:2013/11/01 23:46:46
相変わらず暗いの
最も明るく行ったら
面白くないスレ減ると思います。

414
デフォルトの名無しさん[sage]   投稿日:2013/11/02 16:05:00
LISPって一人で書いているときはまあ良いとして、共同開発で使うと混乱したり、収拾着かなくなったりしないのなんとなく。
コメント1件

415
デフォルトの名無しさん[sage]   投稿日:2013/11/02 17:43:03
そこまで大人数のプロジェクトの経験者は少ないだろうしなあ。
コアの上に他の言語が乗ってるようなものだから、
gtkやobjC、Railsその他と変わらんと予想するが。
マクロも書くライブラリ層設計者と、非マクロのみのアプリ層設計者は分離した方が良いのかも?

416
デフォルトの名無しさん[sage]   投稿日:2013/11/02 17:46:35
ライブラリ層というよりDSL層か。

417
デフォルトの名無しさん[sage]   投稿日:2013/11/02 19:17:34
>414
なる。
グレアムが言うには Viaweb 開発時には分担が完全に分かれてて、
自分の開発したところはユーザーサポートまで含めて自分でやる方式でまわしてたらしい。
新機能もバグ修正も常に行なわれながら発展する進化的モデルでの開発で、
仕様とコードを一体にして決断を下せる立場だったからこそ上手くいったと考えられてる。
ガチガチの仕様を多人数で厳密に満たしていくような開発スタイルじゃ混乱するだろうね。

418
デフォルトの名無しさん[sage]   投稿日:2013/11/02 20:55:28
ガチガチの仕様ならコードもガチガチになるから混乱しないような。
ガチガチの仕様ではLispの柔軟性の価値がないだけで。

419
デフォルトの名無しさん[sage]   投稿日:2013/11/02 22:06:28
グレアムのはこれだっけ?
http://practical-scheme.net/trans/hp-j.html
検索ついでに、こっちも同じ理念語ってたことに今更気づく、、、
http://satoshi.blogs.com/life/2007/10/post-4.html

420
デフォルトの名無しさん[sage]   投稿日:2013/11/02 23:20:57
「Viawebは3人で書いた」
http://practical-scheme.net/trans/road-j.html

421
デフォルトの名無しさん[sage]   投稿日:2013/11/03 01:54:23
まあでも飯は渡された仕様書を実装することで食べる人が圧倒的に多いわけで、LISPなんて役に立たないと思ってもしょうがないですな。
コメント1件

422
デフォルトの名無しさん[sage]   投稿日:2013/11/03 02:30:04
ほとんどは既存のシステムの焼き直しだから、
ライブラリが多いものの方が有利だしなぁ。
結局、ユーザが多い言語の方が有利ってことになる。

423
デフォルトの名無しさん[]   投稿日:2013/11/03 08:27:59
LISPで作った面白いものありますか?

424
デフォルトの名無しさん[sage]   投稿日:2013/11/03 09:12:11
ecLISP

425
デフォルトの名無しさん[sage]   投稿日:2013/11/03 09:12:21
>421
アジャイルには向いているんじゃないの?

426
デフォルトの名無しさん[sage]   投稿日:2013/11/03 16:27:56
ソシャゲがLispで書かれる時代が

427
デフォルトの名無しさん[sage]   投稿日:2013/11/03 23:13:52
(psetq a b b a)は

(let ((a b))
(let ((b a))
(setq a b b a)))

に置き換えられるみたいなんだけどなんでこれでaとbの値を交換できるか理解できない
setqでaにbを入れて結局bに入れるaの値はbになりそうなんだけど

428
デフォルトの名無しさん[sage]   投稿日:2013/11/03 23:47:45

429
デフォルトの名無しさん[sage]   投稿日:2013/11/03 23:48:42
上のpsetqの定義はこれ
(defmacro my-psetq (&rest args)
(let* ((pairs (group args 2))
(syms (mapcar #'car pairs))
(vars (mapcar #'second pairs)))
(labels ((rec (ps ss)
(if (null ps)
`(setq ,@(shuffle syms vars))
(let ((body (rec (cdr ps) (cdr ss))))
(let ((expr (cadar ps)))
`(let ((,(car ss) ,expr))
,body))))))
(rec pairs syms))))

普通gensym使うはずなのに意味不明なコード書いてた
なんで動くんだろ

430
デフォルトの名無しさん[sage]   投稿日:2013/11/03 23:52:35
>428
手続型でaとbを変換するときに
t = a
a = b
b = t
のtをgensymに置き換えてるだけなんだな
多分解決したありがとう

431
デフォルトの名無しさん[sage]   投稿日:2013/11/04 01:25:45
いや、letが初期値を全て評価してから、変数に束縛するから。
本体部分でのみ有効=束縛部分では外のが見える。
http://www.lispworks.com/documentation/HyperSpec/Body/s_let_l.htm
http://people.csail.mit.edu/jaffer/r5rs_6.html

言われて気付いたけど、shiroさんのマクロ余計な事してないか?

432
デフォルトの名無しさん[sage]   投稿日:2013/11/04 02:10:46
>432
ごめん、合ってた。二重評価避けのgensymだ。

433
デフォルトの名無しさん[sage]   投稿日:2013/11/04 02:48:34
>>433
全て自己レス
試したけど、やはりいらない気がする。

434
デフォルトの名無しさん[sage]   投稿日:2013/11/04 15:58:57
433が永久ループに陥っている

435
デフォルトの名無しさん[sage]   投稿日:2013/11/04 18:05:01
誰か末尾再帰してあげてー!


436
デフォルトの名無しさん[sage]   投稿日:2013/11/04 18:19:33
tail call optimizationをするとスタック溢れがおこらないぶんより深刻な事態におちいるじゃない

437
デフォルトの名無しさん[sage]   投稿日:2013/11/05 05:41:21
大丈夫、CLだからそのうち落ちる

438
デフォルトの名無しさん[sage]   投稿日:2013/11/08 10:19:10
信号処理やらうと思うんだが
CLても簡単にできるもんなのかな

439
デフォルトの名無しさん[sage]   投稿日:2013/11/08 21:40:53
言語としてやり難いということはないはず。
ライブラリがなくて自作かcffi書いたり、パフォーマンスのためにCみたいなコードに、はあるかも。

440
デフォルトの名無しさん[sage]   投稿日:2013/11/09 18:03:22
信号処理できそうなのは分かったがgnuplot plplot以外にグラフ描画するライブラリないよな
コメント1件

441
デフォルトの名無しさん[sage]   投稿日:2013/11/09 22:22:41
和田先生みたくPostScriptを直接書けば何の問題ない

442
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/11/09 22:38:26
近頃なら SVG も有りじゃないの。

443
デフォルトの名無しさん[sage]   投稿日:2013/11/10 00:05:53
>440
Processingは使えないのかな?

444
デフォルトの名無しさん[sage]   投稿日:2013/11/10 01:46:36
和田ってのはアホなんだな

445
デフォルトの名無しさん[sage]   投稿日:2013/11/10 01:58:33
ライブラリがないのが問題になる程度の腕なら、マイナー言語全般あきらめて、メジャー言語でやるべき。

446
デフォルトの名無しさん[sage]   投稿日:2013/11/10 08:41:39
ネイティブのライブラリをffi経由でラッパー作ったり。
ClojureみたいなVM言語だと、VM上のライブラリも少し楽に使える。

447
デフォルトの名無しさん[sage]   投稿日:2013/11/11 23:52:07
ニュー速VIP爆撃中の2ch定期書き込みツールqsocks
lispで書かれたこのツールを誰か改造してください。
他板でも使えるようにしてください。
お願いします。m(ーー)m

qsocks
https://anonfiles.com/file/3fcd3edbf6000ecf37b61e8af186c453

qsocksソースコード
http://codepad.org/uyuG7Ovg

448
デフォルトの名無しさん[sage]   投稿日:2013/11/12 00:16:23
改造ってどゆこと?
他の言語で動くようにしろって?

449
デフォルトの名無しさん[sage]   投稿日:2013/11/12 00:22:54
他の板にも書けるようにして欲しいですけど、
まあ、好きなように遊んでください。
楽しいと思いますんで。

450
デフォルトの名無しさん[sage]   投稿日:2013/11/12 08:09:37
この投稿その他lisp方言のスレにもあるな
どの方言かも知らない奴がそこら中に書き込んでるな

451
デフォルトの名無しさん[sage]   投稿日:2013/11/12 09:19:43
興味ない話題はスルーしとけよ
結果的にそれが一番早く事態を収拾させる方法だよ。
一々食って掛かると某「自称本スレ」みたいになる。

もしかして、わざとそうやってここを荒れさせるのが狙いなら
もうこれ以上言うべきことは無いけど。

452
デフォルトの名無しさん[sage]   投稿日:2013/11/12 14:16:33
そもそもソースも読めないのに
悪意を持った素性の知れない人間に作られた悪意のツールを使うなよ

453
デフォルトの名無しさん[]   投稿日:2013/11/12 19:21:51
初心者の物ですがLinxにSynapticでclispをインストールしたのですが
どうしてもclipをインストールした場所が検索出来ません
何方かLinuxのファイル検索上手く出来る方法を教えて頂けませんか?
コメント1件

454
デフォルトの名無しさん[]   投稿日:2013/11/12 19:28:14
$ whereis clisp
コメント2件

455
デフォルトの名無しさん[]   投稿日:2013/11/12 19:30:36
↑ありがとうございました。

456
デフォルトの名無しさん[]   投稿日:2013/11/12 19:50:17
>454
しつこいようですが
処理系てコマンド扱いなんですか?

457
デフォルトの名無しさん[sage]   投稿日:2013/11/12 19:57:33
lisp以前に必要な前提知識が足りない
素直にwindows使ってたほうがいいな
コメント1件

458
デフォルトの名無しさん[]   投稿日:2013/11/12 20:14:22
>457
前提知識のお勧めサイトなどありますか?
コメント2件

459
デフォルトの名無しさん[sage]   投稿日:2013/11/12 20:33:21

460
デフォルトの名無しさん[sage]   投稿日:2013/11/12 21:13:10
>458
https://www.archlinux.org/
こいついっぱしに使えるようになったら余裕になれる

461
デフォルトの名無しさん[sage]   投稿日:2013/11/12 22:39:11
>453
454です。
初心者なら知らなくて当たり前です。これから学べばいいのです。
まず、知っておくことは「わからないことを調べる方法」を学ぶことです。
459の言うように、まずは人に聞く前にGoogleなどで検索する習慣をつけることです。
qiitaやstack overflowなども参考になります。

あなたの質問の内容を見ると、lispとlinuxを同時に学ぼうとしているように見えます。
457の言うように、どちらか一つに絞るのも一つの方法ですが、
個人的には、やる気があれば、なんとかなるのではないかと思います。
コメント2件

462
デフォルトの名無しさん[sage]   投稿日:2013/11/12 22:52:47
まずは、linuxのコマンドをざっと覚えましょう。
www.tuat.ac.jp/~sanoken/tech/unix/command.html
itpro.nikkeibp.co.jp/article/COLUMN/20060224/230573/

次に、ターミナルを立ち上げて、
$ clisp
でclispを起動しましょう。
次のHPがlispの勉強に役だつはずです。
www.geocities.jp/m_hiroi/clisp/
modern-cl.blogspot.jp/
コメント2件

463
デフォルトの名無しさん[]   投稿日:2013/11/13 01:47:11
>461
>462
本当にありがとうございます。
コメント1件

464
デフォルトの名無しさん[]   投稿日:2013/11/13 01:47:53
2重書き込みのため表示しません 内容を確認する
コメント1件

465
デフォルトの名無しさん[sage]   投稿日:2013/11/13 01:59:38
>463
どういたしまして
>464
どうしたしまして

466
デフォルトの名無しさん[sage]   投稿日:2013/11/13 06:45:39
lispとlinuxを同時に勉強か、最初はタイヘンだけど、いいんじゃないかな。
いろいろ言語用にOS側の環境作ったり調べたり質問したりすれば、すぐ両方使えるようになるよ。

467
デフォルトの名無しさん[]   投稿日:2013/11/13 08:38:55
>454
find grepで検索出来なかったのですが
どうしてwhereisなんですか?
コメント2件

468
デフォルトの名無しさん[sage]   投稿日:2013/11/13 09:02:13
スレ違い

469
デフォルトの名無しさん[sage]   投稿日:2013/11/13 09:28:02

470
デフォルトの名無しさん[sage]   投稿日:2013/11/13 11:16:32
>467
find grep whereis でググると次のページがすぐに見つかりました。

www.practicatechnical.com/computer-tips/ubuntu-tips/find-grep-locate-whereis

人に聞く前に、まずは自分で調べるべし。
コメント1件

471
デフォルトの名無しさん[]   投稿日:2013/11/13 13:23:46
>470
ありがとうございます。

472
デフォルトの名無しさん[sage]   投稿日:2013/11/16 19:55:00

473
デフォルトの名無しさん[sage]   投稿日:2013/11/23 21:29:56
schemeはr7rsとか出てるので更新されてるのがわかるんですけど
common lisp の方は1994年の標準化以降更新はないんですかね

474
デフォルトの名無しさん[sage]   投稿日:2013/11/26 00:35:00
ランド・オブ・リスプ読もうと思うんだけど、
Lisp CabinetっていうのでCLISPにチェック入れれば全部動くのかな?

475
デフォルトの名無しさん[]   投稿日:2013/11/26 17:44:55
randomの実装ってどうなってるかわからんかな
線形合同法だとは思うんだけど、具体的に


476
デフォルトの名無しさん[sage]   投稿日:2013/11/26 19:07:45
HyperspecとCLTLチラ見したけど、規格に無さげだし、処理系毎に調べるしか無いんでね?

477
デフォルトの名無しさん[sage]   投稿日:2013/11/26 19:31:33
mjk
lispworks、一応簡単な実験で乱数の範囲は0〜8388607のようなんだがなあ、周期がわからぬ
とりあえずthx

478
デフォルトの名無しさん[sage]   投稿日:2013/11/26 21:15:46
lispworksならドキュメントにあったんだが。
http://www.lispworks.com/documentation/lw50/LWRM/html/lwref-326.htm

479
デフォルトの名無しさん[sage]   投稿日:2013/11/26 21:24:01
mt-

480
デフォルトの名無しさん[sage]   投稿日:2013/11/27 17:14:36
(defmacro my-lambda (&amp;rest body)`(lambda (_ _2 _3) ,@body))
(mapcar (my-lambda (* _ 2)) '(1 2 3))
;=>(2 4 6)

こういう事がしたいのですが、引数の数が足らずエラーが出ます。
(defmacro my-lambda (&amp;rest body)
`(lambda (&amp;rest args)
(d-bind (loop for i from 1 to (length args) collect (symb '_ i))
,@body)))

そこで第一引数を評価するdestructuring-bindを作ろうとしたのですが、どうにもうまく作れません。
_1 _2...を引数の数に合わせて生成しバインドするいい方法はないでしょうか?

481
デフォルトの名無しさん[sage]   投稿日:2013/11/27 18:04:08
何がやりたいのかはっきりしないけど
こんなマクロが欲しいの?

(my-lambda (* _1 _4))
->
(lambda (_1 _2 _3 _4) (* _1 _4))
コメント1件

482
デフォルトの名無しさん[sage]   投稿日:2013/11/27 18:26:12
作りが甘いけどこんなのでいいのかい?
(defun flatten (tree)
(labels ((f (tree acc)
(cond ((null tree) acc)
((atom tree) (cons tree acc))
(t (f (car tree)
(f (cdr tree) acc))))))
(f tree nil)))

(defun ubar-var? (x)
(let ((name (symbol-name x)))
(and (eq #¥_ (elt name 0))
(handler-case
(parse-integer name :start 1)
(error (c)
nil)))))

(defun mapa-b (f a b)
(if (> a b)
nil
(cons (funcall f a) (mapa-b f (1+ a) b))))

(defun my-lambda (&rest body)
(let* ((ubar-vars (remove-if-not #'ubar-var? (flatten body)))
(numbers (sort (mapcar #'ubar-var? ubar-vars) #'<))
(first (first numbers))
(last1 (car (last numbers))))
`(lambda ,(mapa-b (lambda (i)
(intern (format nil "_~s" i)))
first last1)
,@body)))
コメント1件

483
デフォルトの名無しさん[sage]   投稿日:2013/11/27 18:26:31
>481
普通の(lambda args body)に対し(my-lambda body)だけの記述で
引数に_1 _2 _3が裏で束縛されてbody内で使えるというものです。

484
デフォルトの名無しさん[sage]   投稿日:2013/11/27 18:50:00
>482
bodyをflattenしてsymbolを走査し、ラムダ式の引数の数を決めるという
アプローチですか。考えつきませんでした!
レスありがとうございます。

485
デフォルトの名無しさん[sage]   投稿日:2013/11/27 18:50:36
使ってない変数で怒られたのでちょっと変項

(defmacro my-lambda (&body body)
(let* ((ubar-vars (remove-if-not #'ubar-var? (flatten body)))
(numbers (sort (mapcar #'ubar-var? ubar-vars) #'<))
(first (first numbers))
(last1 (car (last numbers)))
(vars (mapa-b (lambda (i)
(intern (format nil "_~s" i)))
first last1))
(ignores (set-difference vars ubar-vars)))
`(progn
(lambda ,vars
(declare (ignore ,@ignores))
,@body))))

(funcall (my-lambda (+ _1 _3 (* _4 _1))) 1 2 3 4)
-> 8

486
デフォルトの名無しさん[sage]   投稿日:2013/11/28 00:52:21
LOLに似たようなリードマクロがあったな
あっちは引数の数指定してたけど

487
デフォルトの名無しさん[sage]   投稿日:2013/11/28 22:36:41
配列でarray-total-size-limit以上のデータを扱うとしたら、普通はどうするんでしょうか?

488
デフォルトの名無しさん[sage]   投稿日:2013/11/29 23:14:16
あんまりないケースみたいですね。
仕方ないので、配列の配列をバッファとして持つクラスを作って、アクセサに
工夫をして凌ぐことにしました。
コメント1件

489
デフォルトの名無しさん[]   投稿日:2013/11/30 07:43:28
>488
array-total-size-limitって一千万を超える値だけど、そんなデカイ配列何に使うのか興味津々
コメント1件

490
デフォルトの名無しさん[sage]   投稿日:2013/11/30 12:06:01
>489
時系列の実験データを入れるのに使おうかと。使っている処理系が諸事情でclozure clなんですが、
limitが他に比べて小さいですね。
以前はpython使っていたんですが、pythonは自前のループで書いた処理が遅いので、好みのclでやりたくて、移行中です。
pythonはいい言語ですが、強制インデントがどうも性にあわない...
コメント1件

491
デフォルトの名無しさん[sage]   投稿日:2013/11/30 17:07:10
強制インデントかー。最近の言語は何々が出来ないが売りが増えて何だかなーがあるな。
表現が制限されるという事は、うまく抽象化できない概念が増えるという事だと思うのだけど。
手続き概念を書きたいのに、素直に書けないとか。
いかなる表現も自由で、抽象化方法も簡単に実装できるLisp系が、もっとも表現力のある言語。

492
デフォルトの名無しさん[sage]   投稿日:2013/11/30 20:19:45
>490
http://cl.cddddr.org/index.cgi?ARRAY-TOTAL-SIZE-LIMIT

Clozure CL 1.7 64-bit 2^56 = 72057594037927936
Clozure CL 1.7 32-bit 2^24 = 16777216

これで足りないなんてどんだけデカイ配列なの?

493
デフォルトの名無しさん[sage]   投稿日:2013/11/30 21:23:49
計測器から垂れ流されるデータを解析しようとするとそんくらい普通に行くよ。
こういうのはオンメモリで処理するのをあきらめた方が良い。

494
デフォルトの名無しさん[sage]   投稿日:2013/11/30 22:06:06
おれなら sqlite に突っ込むかな

495
デフォルトの名無しさん[sage]   投稿日:2013/12/05 00:20:45
どうして
``(,`(,x ,x) ,`(,x ,x))を評価すると
`((,X ,X) (,X ,X))になるんですか?

496
デフォルトの名無しさん[sage]   投稿日:2013/12/05 21:28:07
なりません

497
495[sage]   投稿日:2013/12/05 22:50:52
なりませんか?こちらではsbcl、clispで同様になりました。

(setq x '(+ 8 8))
`(`(,,x)) ;=> (`(,(+ 8 8))) ; xは評価されたあともう一度評価される
`(`(,',x));=> ('((+ 8 8))) ; xは一度だけ評価される (言い換え, クオートされた後もう一度評価される)
`(`(,`,x));=> (`(,x)) ; xは次の評価時に評価される なぜこう変換される?

二重バッククオートでは``,,や``,,@や``,',などが頻出ですが、``,`,がどう動いているのか分かりません。

498
デフォルトの名無しさん[sage]   投稿日:2013/12/05 23:20:03
準クォートはバッククォートの引数だけ評価するから
,`(,x ,x) は (,x ,x) になって
一番手前の準クォートは評価されてその引数を返す形になるから消えて
`((,x ,x) (,x ,x))
になるんじゃない?

処理系作ってみるのが一番理解できると思うけど

499
デフォルトの名無しさん[sage]   投稿日:2013/12/06 00:05:47
うちの環境だと

clisp 2.48(cygwin)
[1]> ``(,`(,x ,x) ,`(,x ,x))
(LIST (LIST X X) (LIST X X))

sbcl 1.0.48(win32)
* ``(,`(,x ,x) ,`(,x ,x))
`((,X ,X) (,X ,X))

500
デフォルトの名無しさん[sage]   投稿日:2013/12/06 00:34:27
仕様はコレ。
http://www.lispworks.com/documentation/HyperSpec/Body/02_df.htm

仕様どおりにリーダマクロを展開すると
``(,`(,x ,x) ,`(,x ,x))
=> ``(,(APPEND X X NIL) ,(APPEND X X NIL))
=> `(APPEND (APPEND X X NIL) (APPEND X X NIL))
となる(仕様上もうちょっと展開は続く)。

が、それぞれの時点で equal の意味で等しい範囲内での最適化が許されている。
この式を最適化すれば
`(APPEND (APPEND X X NIL) (APPEND X X NIL))
=> `(LIST (LIST X X) (LIST X X)) ;; *1
となり、 clisp 2.48 の例と一致する。

backquote が専用のマクロに展開されるような処理系だと、
`や,の情報を展開後も保持できる。
ここで
(LIST X X) == `(,X ,X)
(LIST `(,X ,X) `(,X ,X)) == `((,X ,X) (,X ,X))
であるから、 sbcl 1.0.48 の例も正しい。
コメント1件

501
デフォルトの名無しさん[sage]   投稿日:2013/12/06 01:08:56
ほー

502
デフォルトの名無しさん[sage]   投稿日:2013/12/06 14:27:37
>準クォートはバッククォートの引数だけ評価するから
>,`(,x ,x) は (,x ,x) になって

その理屈だと
,'(,x ,x) も (,x ,x) になるから違うよ

503
デフォルトの名無しさん[sage]   投稿日:2013/12/06 14:37:32
>If the backquote syntax is nested, the innermost backquoted form should be expanded first.
>This means that if several commas occur in a row, the leftmost one belongs to the innermost backquote.
混乱してきたので、誰か訳して><

504
デフォルトの名無しさん[sage]   投稿日:2013/12/06 14:50:03
もしバッククオートシンタックスがネストしていた場合、
最も内側のバッククオートが最初に展開されなければならない。
これは以下のことを意味する。
複数のカンマが文の中に現れた場合、
最も左のカンマは最も内側のバッククオートに属する。

505
503[sage]   投稿日:2013/12/06 17:26:52
>>504
トンクス。r5rsの「準引用形式は入れ子にしてもよい。置換は,最外のバッククォートと同じ入れ子レベルで
現れる被 unquote 要素に対してだけ行われる」
最外と最も内側だから、schemeとCommon Lispで動作がちがうん?
コメント1件

506
デフォルトの名無しさん[sage]   投稿日:2013/12/06 17:29:42
the leftmost one belongs to the innermost backquote.ってどういう意味だ?
コメント1件

507
495[sage]   投稿日:2013/12/06 18:18:51
>500
なるほどバッククオートもただのマクロなので
普通のマクロと同じく展開の過程を考えれば分かりやすいですね
once-onlyというマクロの定義で使われていたのが元々の出典でした。

`(hoge ,x) => (list 'hoge x)
`(hoge `(a ,(b ,x))) => `(hoge (list 'a (b ,x))) => (list 'hoge (list 'a (b x)))

``(,`(,x ,x) ,`(,x ,x))
=> ``(,(list X X) ,(list X X)) ; もっとも内側の`を展開
=> `(list (list X X) (list X X)) ; 二個目の`を展開
=> (list (list X X) (list X X))
= `((,x ,x) (,x ,x))

理解しました。

チートメモ
``,,x : 1度目評価される、2度目評価される
``,',x : 1度目評価される、2度目評価されない
``,`,x : 1度目評価されない、2度目評価される

508
495[sage]   投稿日:2013/12/06 18:20:48
*レスありがとうございました。

509
デフォルトの名無しさん[sage]   投稿日:2013/12/06 20:31:16
lisp勉強し始めたんだけどdisassembleできるんだねこれ(驚嘆)

510
デフォルトの名無しさん[sage]   投稿日:2013/12/06 21:26:47
ディスアセンブラが規格に入ってる唯一の言語 Common Lisp


511
デフォルトの名無しさん[sage]   投稿日:2013/12/06 21:40:00
common lispの闇は深い

512
デフォルトの名無しさん[sage]   投稿日:2013/12/06 23:20:44
>506
```,,,0 みたいのがあったとき、右端の`と左端の,がペアになるよ、という意味だと思う。

>505
r5rs の場合 ```,,,0 == ``,,0
CL の場合 ```,,,0 == 0
というわけで違う。
コメント1件

513
503[sage]   投稿日:2013/12/07 07:23:03
>512
ありがと。今迄どちらも同じだと思いこんでた。

514
デフォルトの名無しさん[sage]   投稿日:2013/12/07 12:44:23
なに、CLとschemeってバッククオートの挙動違ったのか!

515
デフォルトの名無しさん[sage]   投稿日:2013/12/07 21:44:31
初歩的でスマンのだけど、floatのビット表現ってどうやって出すんだろ
formatで出来るかなと思ったんだがggってもよくわからんかった
コメント1件

516
デフォルトの名無しさん[]   投稿日:2013/12/07 23:54:57
>515
これかな。

浮動小数点数のIEEE754形式への変換
d.hatena.ne.jp/sile/20101023/1287829698

「"Common Lisp" float bit」でググって発見。
コメント1件

517
デフォルトの名無しさん[sage]   投稿日:2013/12/08 16:58:21
>516
ありがとうありがとう・・・!single-floatもちょっと調べてできた
ggり方が悪かったようだ、反省

518
デフォルトの名無しさん[]   投稿日:2013/12/08 23:45:31
clisp
acl
ecl
ccl
cmucl
sbcl
maximaで使いたいけどれが最速ですか?

519
デフォルトの名無しさん[sage]   投稿日:2013/12/09 04:42:12
maximaはよくわからないが
とりあえずacl cmucl sbcl が早い
aclは高いから論外だな

520
デフォルトの名無しさん[]   投稿日:2013/12/09 05:05:19
ありがとうございます。
aclは無料版です。
Macのダウンロードしたら派手なGUIでビックリ
コメント1件

521
デフォルトの名無しさん[sage]   投稿日:2013/12/15 23:18:14
(let* ((para1 3)
(ary (make-array (list para1 3) :initial-element 0)))
(dotimes (i para1) (setf (aref ary i 0) i)
(print ary)))

;; #2A((0 0 0) (0 0 0) (0 0 0))
;; #2A((1 0 0) (0 0 0) (0 0 0))
;; #2A((2 0 0) (0 0 0) (0 0 0))

522
デフォルトの名無しさん[sage]   投稿日:2013/12/15 23:21:19
途中で送ってしまった。
clozure cl armlinux 1.8で実行すると、結果が>520のように
おかしくなるんだけど、これはバグかな?
(正しくは
;; #2A((0 0 0) (0 0 0) (0 0 0))
;; #2A((0 0 0) (1 0 0) (0 0 0))
;; #2A((0 0 0) (1 0 0) (2 0 0))
となるはず)

523
デフォルトの名無しさん[sage]   投稿日:2013/12/15 23:53:03
sbclは
#2A((0 0 0) (0 0 0) (0 0 0))
#2A((0 0 0) (1 0 0) (0 0 0))
#2A((0 0 0) (1 0 0) (2 0 0))
だね
コメント1件

524
デフォルトの名無しさん[]   投稿日:2013/12/16 01:14:15
>523
検証ありがとうございます。ideone(clisp)でもそうなりました。
またdotimesのpara1を3に変えると、なぜか正解になるので、やっぱりバグみたいですね。

525
デフォルトの名無しさん[sage]   投稿日:2013/12/16 23:48:39
arm linux clozure cl ver 1.9が出ていたので、インストールして確認したら、
ちゃんと修正されていました。

526
デフォルトの名無しさん[sage]   投稿日:2013/12/20 21:31:16
(c == '-')ってすごく顔文字みたい

527
デフォルトの名無しさん[sage]   投稿日:2013/12/20 21:35:22
かわいい

528
デフォルトの名無しさん[sage]   投稿日:2013/12/20 21:53:59
誤爆しました

529
デフォルトの名無しさん[sage]   投稿日:2013/12/21 10:13:46
和んだ

530
デフォルトの名無しさん[sage]   投稿日:2013/12/21 18:25:01
`(,`(,`(,"-"))) 僕イモムシ

((("-"))) ワワッ評価されちゃった

531
デフォルトの名無しさん[sage]   投稿日:2013/12/21 20:29:24
リストの区切りが空白文字なのは地味に嬉しい

532
デフォルトの名無しさん[sage]   投稿日:2013/12/25 04:26:58
最近気が付いたんだがLispがあればCSVとかいらなくなるんだな
始めに(defun つけてうまくかっこつけてスペースでデータ分けれるし
これがデータとしてのコードとか言われる由縁なのか

533
デフォルトの名無しさん[sage]   投稿日:2013/12/26 21:32:26
はぁ?

534
デフォルトの名無しさん[sage]   投稿日:2013/12/26 22:15:20
ひぃっ!

535
デフォルトの名無しさん[sage]   投稿日:2013/12/26 22:16:08
ふぅ…

536
デフォルトの名無しさん[sage]   投稿日:2013/12/26 22:28:47
へぇー

537
デフォルトの名無しさん[sage]   投稿日:2013/12/26 22:46:00
ほ、ほーっ、ホアアーッ !! ホアーッ !!

538
デフォルトの名無しさん[sage]   投稿日:2013/12/27 20:06:48
deleteってcar部消えないの?hyperspec読んでもよくわからんかった

(setq a '(1 2 3))
(delete 2 a)      => (1 3)
a             => (1 3)

(setq b '(1 2 3))
(delete 1 b)      => (2 3)
b             => (1 2 3)
コメント1件

539
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2013/12/27 20:20:38
>538
与えた配列は結果を構築するために再利用されうるという意味で破壊的なのであって、あくまで返り値が delete の結果。
Side Effects の項に書いてあるのはそういう意味。

540
デフォルトの名無しさん[sage]   投稿日:2013/12/27 20:24:14
まあ、nconcとnsubstitute以外は副作用を期待して使うなって話もあるしね

541
デフォルトの名無しさん[sage]   投稿日:2013/12/27 21:37:08
なるほどねーthx

542
デフォルトの名無しさん[sage]   投稿日:2013/12/31 22:58:19
・setq のような special form ってユーザー定義可能なんでしょうか?
・以下のクロージャを (myfun 10) のようにコールする方法はありませんか?
> (setq myfun (let ((cnt 0)) (lambda (delta) (setq cnt (+ cnt delta)))))
> (funcall myfun 10)
10
> (funcall myfun 10)
20
> (funcall myfun 2)
22

543
デフォルトの名無しさん[sage]   投稿日:2014/01/01 00:57:17
・以下のクロージャを (myfun 10) のようにコールする方法はありませんか?

setqじゃなくてsetfを使うならsymbol-functionを使って
(setf (symbol-function 'myfun)
(let ((cnt 0)) (lambda (delta) (setq cnt (+ cnt delta)))))

544
デフォルトの名無しさん[sage]   投稿日:2014/01/01 00:59:21
(setf (fdefinition 'myfun) (let (lambda (.....
じゃだめですかね?

545
デフォルトの名無しさん[sage]   投稿日:2014/01/01 01:00:22
まちがえた

546
デフォルトの名無しさん[sage]   投稿日:2014/01/01 01:04:13
lispビギナーより迎春
http://ideone.com/WsMzJM

547
デフォルトの名無しさん[sage]   投稿日:2014/01/01 03:07:30
・setq のような special form ってユーザー定義可能なんでしょうか?
special formと呼ばれるものは仕様で決まっていてユーザー定義できないが、使う側から見ればspecial formとマクロとは変わらないのでマクロを定義すれば望むことはできるはず

548
デフォルトの名無しさん[sage]   投稿日:2014/01/01 03:14:08
テキストデータを高速にパースして読み込むライブラリって何か定番あるんですかね
適当にread-lineとか使って自分で書くと数十MBくらいのファイルでもう速度が気になりだしてしまう

549
542[sage]   投稿日:2014/01/01 10:33:34
みなさん、ありがとうございます。
マクロの使い方も分かってきました。
(defmacro mysetq (x val) `(set 'x ,val))

550
542[sage]   投稿日:2014/01/01 13:27:09
訂正、
(defmacro mysetq (x val) `(set ,x ,val))
でした。

551
542[sage]   投稿日:2014/01/01 13:31:17

これも間違ってましたね・・・
さすがに setq, setf, quote どれも使わずに手製 setq の実現は無理なんでしょうか
(defmacro mysetq (x val) (setq ,x ,val))
コメント1件

552
デフォルトの名無しさん[sage]   投稿日:2014/01/01 15:13:28
>551
(defmacro mysetq (x val) `(set ',x ,val))
setqというのはset + quoteらしい。
コメント1件

553
デフォルトの名無しさん[sage]   投稿日:2014/01/02 18:56:45
closのインスタンスのプロパティーを表示させたいんだけどいい方法ない?
例えば、クラスfooのインスタンスがa=1,b=2のプロパティーを持っていたとすると。
#<foo (a=1, b=2)>
みたいに表示される関数が欲しいんだけど。

554
デフォルトの名無しさん[sage]   投稿日:2014/01/02 18:58:35
書き込んだ瞬間に思い出したinspectでいいね。
スレ汚しすまん。

555
デフォルトの名無しさん[sage]   投稿日:2014/01/03 13:48:08
>552
ああ、defmacro テンプレートでの「,」(評価する)は対応するパラメータ記述そのままに置き換えられるんですね。
最初混乱しましたが、やっと分かってきました。

556
デフォルトの名無しさん[sage]   投稿日:2014/01/04 15:23:56
パッケージの使い方ややこしすぎて混乱する
何か良い説明してる所はないのかな

557
デフォルトの名無しさん[sage]   投稿日:2014/01/04 20:12:58
解決しました

558
デフォルトの名無しさん[sage]   投稿日:2014/01/06 18:02:32
common lispのループマクロは
pythonのリスト内包表記のように
[(x, y) for x in range(2) for y in range(2)]
=> [(0, 0), (0, 1), (1, 0), (1, 1)]
こんな感じのことは出来ませんか?

559
デフォルトの名無しさん[sage]   投稿日:2014/01/06 22:28:22
単純に考えたら2重ループになってしまった。
Common Lispにタプルはないのでリストで代用。
(loop for x below 2 nconc (loop for y below 2 collect (list x y)))
=> ((0 0) (0 1) (1 0) (1 1))

560
デフォルトの名無しさん[sage]   投稿日:2014/01/06 22:33:06
やっぱりloopを二重にしないと出来ないんですね
納得しました

561
デフォルトの名無しさん[sage]   投稿日:2014/01/09 17:43:04
(defmacro loop* (a b c x-max d e f y-max)
`(loop for x below ,x-max nconc (loop for y below ,y-max collect (list x y))))

(loop* for x below 2 for y below 2)
;=> ((0 0) (0 1) (1 0) (1 1))

562
デフォルトの名無しさん[sage]   投稿日:2014/01/09 18:00:51
次は3重以上も対応するようにしてみよう

563
デフォルトの名無しさん[]   投稿日:2014/01/09 19:22:39
(defmacro loop* (&rest arg) (gen-nested-loop (group arg 4)))

(defun gen-nested-loop (clauses &optional syms)
(if clauses
(let ((sym (gensym)))
`(loop for ,sym below ,(nth 3 (first clauses))
nconc ,(gen-nested-loop (rest clauses) (cons sym syms))))
`(list (list ,@(reverse syms)))))

(defun group (lst n)
(labels ((rec (lst acc)
(if (nthcdr n lst)
(rec (nthcdr n lst) (cons (subseq lst 0 n) acc))
(reverse (cons lst acc)))))
(rec lst nil)))

564
デフォルトの名無しさん[]   投稿日:2014/01/10 00:23:52
Common Lisp で ssh 用のライブラリはありますか?
ネット上を探してみたのですが見付かりませんでした。。。

565
デフォルトの名無しさん[sage]   投稿日:2014/01/11 18:36:57
"hoge"を:hogeにする方法ってありますか?

566
デフォルトの名無しさん[sage]   投稿日:2014/01/11 19:36:18
(intern (format nil ":~a" "hoge"))
こーゆーこと?

567
デフォルトの名無しさん[sage]   投稿日:2014/01/11 19:41:57
それだと|:hoge|になるので違います

568
デフォルトの名無しさん[]   投稿日:2014/01/11 20:41:40
(intern "HOGE" :keyword)
;=> :HOGE

:hoge は keyword:hoge の略記。
コメント1件

569
デフォルトの名無しさん[sage]   投稿日:2014/01/11 20:47:37
おお!
勉強になりましたありがとうございます

570
デフォルトの名無しさん[sage]   投稿日:2014/01/11 21:13:58
>568
素晴らしい

571
デフォルトの名無しさん[sage]   投稿日:2014/01/13 11:19:27
苫米地英人って胡散臭い人だと思っていたけど、LISPでは偉い人なの?

Wikipediaの引用で悪いけど
http://ja.wikipedia.org/wiki/%E8%8B%AB%E7%B1%B3%E5%9C%B0%E8%8B%B1%E4%...

>プログラム言語であるLISP言語の論文を、かつていくつか発表していた時期がある。[38] 、イェール大学大学院では、
>オブジェクト指向LispのTプログラミング言語により、超並列処理システムなどを構築している[39]。
>カーネギーメロン大学計算機科学部に移籍後は、Common Lispの生みの親、スコット・ファールマン
>(Scott Fahlman)教授の下でLispプログラミングを勉強し、この縁からファールマンがジャストシステム
>ピッツバーグ研究所所長に、苫米地が取締役に就任した[40]。帰国後もCommon Lispの研究を続け[41]、
>通産省の援助でCommon Lispで記述されたWeb サーバである、Lispache サーバなどを発表している[42]。
>また、Common Lispにおける動的オブジェクト指向モデルのCLOSの普及にも尽力している[4

なんかやたらすごいじゃん。
このスレのスーパーLiSPハカー諸兄による評価お願い

572
デフォルトの名無しさん[sage]   投稿日:2014/01/13 15:16:58
凄そうに書いてはあるけど、凄いうちに入るのかなぁ?

573
デフォルトの名無しさん[]   投稿日:2014/01/13 16:19:36
ジャストシステムの時点でショボイが
その海外事務所のサブはかなりショボイ感

574
デフォルトの名無しさん[sage]   投稿日:2014/01/14 00:13:40
ファールマン教授、そんなショボイとこの所長やってたの?

575
デフォルトの名無しさん[sage]   投稿日:2014/01/14 00:41:55
お前らの所属と経歴はどうなんだよw

576
デフォルトの名無しさん[sage]   投稿日:2014/01/14 09:37:10
省略名がMITな日本の大学の僕からみればCMUに行けるだけでもすごいなぁ

577
デフォルトの名無しさん[sage]   投稿日:2014/01/14 13:38:27
苫米地すごいな

578
デフォルトの名無しさん[sage]   投稿日:2014/01/14 14:21:05
室蘭?

579
デフォルトの名無しさん[sage]   投稿日:2014/01/14 18:43:04
なんで経歴そんなにすごいのにインチキおやじになっちゃったんだ?

580
デフォルトの名無しさん[sage]   投稿日:2014/01/14 18:55:11
鳩山とか見てたらだいたい理解できる
コメント1件

581
デフォルトの名無しさん[sage]   投稿日:2014/01/14 22:52:58
>580
すげー納得した

582
デフォルトの名無しさん[sage]   投稿日:2014/01/14 23:31:28
苫米地ってkeyholetvも作ったんだよな。
アナログテレビ時代にアナログテレビが全部ネットで見れたソフト。
裁判になったら放送法の問題点があらわになるから訴えられるのを
待っていると言っていたが結局訴えられないままアナログ放送終わった。

583
デフォルトの名無しさん[sage]   投稿日:2014/01/15 08:01:21
アスミンおめでとう

584
デフォルトの名無しさん[sage]   投稿日:2014/01/15 08:38:11
なんでや!Lispとは関係な……くもないのか

585
デフォルトの名無しさん[sage]   投稿日:2014/01/15 09:22:10
イメージキャラクターをLispエイリアンにしなかったのが敗因

586
デフォルトの名無しさん[sage]   投稿日:2014/01/16 01:25:38
声優と結婚って楽しいのかなぁ?

587
デフォルトの名無しさん[sage]   投稿日:2014/01/16 09:47:17
やっぱりエッチの時の声がな

ちびまる子ちゃんはやめてけれ

588
デフォルトの名無しさん[]   投稿日:2014/01/17 08:20:56
コバペロ「ンーwwwwwwwwwwwwwwwwwwwwwwww」

589
デフォルトの名無しさん[sage]   投稿日:2014/01/18 00:11:26
複数行にわたる文字列のうち行頭のタブ文字や空白を取り除こうとしているのですがうまくできません
対象となる文字列は
"
a
[space][space]b
[tab]a
[tab]
c
"
こういうもので[space]は空白文字が、[tab]にはタブ文字が入ることを想定しています
(cl-ppcre:regex-replace-all "^\\t" string "")
ならタブ文字は削除できたのですが
(cl-ppcre:regex-replace-all "^\\t" string "")
では行頭からタブ文字を探せていないようなのです
どこを修正すればよいですか
コメント1件

590
デフォルトの名無しさん[sage]   投稿日:2014/01/18 09:38:26
正規表現"(?m)^\\s+"はどうでしょう。

通常^は対象文字列の先頭のみにマッチします。
そこで、(?m)によって^が対象文字列中の改行後にもマッチするようにします。
\\sは(スペース、タブなどの)空白文字一般にマッチします。
コメント1件

591
デフォルトの名無しさん[]   投稿日:2014/01/18 13:55:02
>589
(regex-replace-all (create-scanner "^\\t" :multi-line-mode t) string "")

592
589[sage]   投稿日:2014/01/19 01:09:03
>590-591
ありがとうございます
複数行にわたる処理のオプションを適切に指定しなければならなかったのですね
\sについてもありがとうございました

593
デフォルトの名無しさん[sage]   投稿日:2014/01/19 15:54:28
Lispエイリアンがすごく愛らしく思えてきた。疲れてるのかな
コメント1件

594
デフォルトの名無しさん[sage]   投稿日:2014/01/19 17:41:08
>593
スカリーさんが居ないのがLisp界隈の不幸なのかもしらん

595
デフォルトの名無しさん[sage]   投稿日:2014/01/22 19:25:06
lispacheって何がすごいの?
http://www.crl.co.jp/crlodev/product/SUN_Lispache.pdf
これの特徴みると突っ込みどころばっかりだけど
コメント1件

596
デフォルトの名無しさん[sage]   投稿日:2014/01/23 00:15:59
>595
とりあえず突っ込みどころをつっこんでくれ

597
デフォルトの名無しさん[sage]   投稿日:2014/01/26 00:52:35
仕事でcommon lisp使ってる人ってその前に何の本読んでから使ってるんでしょう
実践/実用 Common Lisp のどちらか読んでるのか、あるいはSICPとかから入っていろいろと読んでいるのか
どれくらい読んでると最低限仕事に使えてるものなのかが知りたいです
コメント1件

598
デフォルトの名無しさん[sage]   投稿日:2014/01/26 01:26:07
処理系のマニュアルも結構読むのでしょうか
コメント1件

599
デフォルトの名無しさん[sage]   投稿日:2014/01/26 11:46:27
>597
CLTL2
処理系のソース
各種ライブラリのソース

いつでも参照するのが CLHS
実践/実用 Common Lisp とかは, ずっと後になって斜め読みした程度.

>598
> 処理系のマニュアルも結構読むのでしょうか
ふつう読むだろ?
gcc とかだって, 処理系マニュアル読まないと使えないんじゃないの?
コメント1件

600
デフォルトの名無しさん[sage]   投稿日:2014/01/26 15:35:46
"~/hoge/huga.lisp"を"/home/user/hoge.lisp"にする関数を教えて下さい。
elispではexpand-file-nameで出来たのですが。

601
デフォルトの名無しさん[sage]   投稿日:2014/01/26 15:47:06
ずっとLinux上でコードを書いていて
ファイル中で(load "~/Dropbox/hoge.lisp")としていたのですが
windowsで動かそうとするとエラーが出たのが経緯です。
(windows上で(user-homedir-pathname)で変えるパスにDropboxはあります)

(with-open-file (stream "~/hogehogefile" :direction :output)
(format stream "hoge~%"))としてみると

error opening #P"d:~/hogehogefile": Unknown error
[Condition of type SB-INT:SIMPLE-FILE-ERROR]

となってしまいます。

602
デフォルトの名無しさん[sage]   投稿日:2014/01/26 16:49:42

603
デフォルトの名無しさん[sage]   投稿日:2014/01/26 18:22:50
>602
レスありがとうございます。
ふむふむ、この方はディレクトリを監視するプログラムにおいて
監視先ディレクトリを#+MSWINDOWSで変えるという手法を取っていますね。
しかしloadの~展開に関して#+MSWINDOWSを組み合わせる綺麗な手法が思いつきませんでした。
loadをラップして自分で~を展開するコードを書いたらうまく動きました。
(皆こんなことやってるのかなぁ?)

(defun expand-file-name (path)
(if (equal (subseq path 0 2) "~/")
(merge-pathnames (subseq path 2) (user-homedir-pathname))
path))
(defmacro load* (str) `(load ,(expand-file-name str)))

;(load "~/Dropbox/hoge.lisp") ; windowsでは動かない
(load* "~/Dropbox/hoge.lisp") ; どちらでも動く
コメント2件

604
デフォルトの名無しさん[]   投稿日:2014/01/26 18:53:15
>603
パスネームを使えばいいのでは。どうしても文字列と "~/" を使わないと駄目なの?

(defvar *dropbox-directory-pathname*
(merge-pathnames (make-pathname :directory '(:relative "Dropbox")
:version :newest)
(user-homedir-pathname)))

(defvar *hoge-lisp-pathname*
(make-pathname :name "hoge"
:type "lisp"
:version :newest
:defaults *dropbox-directory-pathname*))

(load *hoge-lisp-pathname*)

605
デフォルトの名無しさん[]   投稿日:2014/01/26 18:58:47
あと、>603のコードが「どちらでも動く」というのは、たまたまその処理系が
Windowsでも "/" をディレクトリ区切り文字として解釈する実装になっている
からではないかと。厳密には可搬性は無いと思う。

606
デフォルトの名無しさん[sage]   投稿日:2014/01/26 20:54:37
>602
hogeキチガイは早く消えろ。
ふむふむじゃねーよクズが。

607
デフォルトの名無しさん[sage]   投稿日:2014/01/26 22:01:26
>599
>CLTL2
>処理系のソース
>各種ライブラリのソース
> CLHS
なるほど、規格とか処理系自体に関することの方なんですね。

>マニュアル
読むか読まないかだったらそうでしたね…(つまらない質問ですみません)。読むというのは必要になった時都度該当箇所を読む感じなのでしょうか、それとも頭から読んでしまっていますか?

どの程度の人数・期間の、(差し支えなければ)どういった種類のプロジェクトで使ったのかも興味があるので教えてもらえると嬉しいです
コメント3件

608
デフォルトの名無しさん[sage]   投稿日:2014/01/26 22:25:03
>607
業務で CL 使うなんてのは,

o やたら, 仕様がコロコロ変わるけど, 納期の壁はいかんともしがたい
o 該当jobに精通したエキスパートが少ない
o マクロ, リーダーマクロに頼りきりって取り敢えず動作させる

てな, プロジェクトにしか使えないっす

現実的には, 実験要素てんこ盛りの研究開発用のプロトタイピングが
ほとんど. メンバー数も, 多くて 5人程度

もしくは, 一人で思いっきり趣味に走れるプロジェクトとか
コメント2件

609
デフォルトの名無しさん[sage]   投稿日:2014/01/26 22:29:32
lispは神秘のベールに包まれてるけど魔法じゃないからね

610
デフォルトの名無しさん[sage]   投稿日:2014/01/26 22:34:19
>607
追加

> 読むというのは必要になった時都度該当箇所を読む感じなのでしょうか
とりあえず, 目は通します.
少なくとも, 性能ネックになった場合,何とかなるかならないかを判断できる程度には

611
デフォルトの名無しさん[sage]   投稿日:2014/01/26 23:37:53
>607
はるか大昔、ある特殊なプログラミング言語環境(今で言うDSL)を Lisp で作ったり、
ウェブサーバ(HTTPサーバ)の開発プロジェクトに関わった事があるなぁ(どちらも
民間企業の業務)。Lisp じゃないけど Scheme(STk) で弁当屋の売上管理システム
作ってた人がいたっけ。雑誌名は忘れたけど紹介記事が載ってたな。何で Scheme
で!?って思ったけどw

>608
だよね〜
コメント1件

612
デフォルトの名無しさん[sage]   投稿日:2014/01/28 01:15:12
>608
>611
なるほど、やはりそういうピーキーな使い方になるんですね。
質問を重ねて申し訳ないのですが、業務で使うという場合だと他の言語と比べるとどのへんが使いにくい点になるんでしょう? ライブラリとかノウハウの充実度なのでしょうか。それとも納品の都合なども絡んで来るのでしょうか。
コメント1件

613
デフォルトの名無しさん[sage]   投稿日:2014/01/28 11:53:32
>612
> 業務で使うという場合だと他の言語と比べるとどのへんが使いにくい点
メンテナーの確保

614
デフォルトの名無しさん[sage]   投稿日:2014/01/28 11:56:30
ライブラリについては良く聞く話だな
ライブラリに依存しない部分的な処理だけLispで書いてもいいのかもしれんが

615
デフォルトの名無しさん[sage]   投稿日:2014/01/28 18:43:19
fooからbar,barからfooパッケージを使いたいときに
http://codepad.org/kQeZJjBl
こういう書き方をするとループしてしまうみたいです
fooからbar,barからfooを使うもっと良い書き方はありますか
それとも設計が悪いですか

616
デフォルトの名無しさん[sage]   投稿日:2014/01/30 00:09:44
規格を調べる気にもならない。設計をやり直した方がいい。

617
デフォルトの名無しさん[sage]   投稿日:2014/01/30 01:06:12
やっぱりそうですね
すっきりしました

618
デフォルトの名無しさん[sage]   投稿日:2014/01/30 01:40:58
なるほどメンテナー…。
参考になりました。お答えいただいた方々ありがとうございました。

619
デフォルトの名無しさん[sage]   投稿日:2014/01/30 19:51:55
Common Lisp初めてみたいんだけどSBCLッテイウノデイイノ

620
デフォルトの名無しさん[sage]   投稿日:2014/01/30 22:36:59
いいんじゃない
なんならSBCLとclisp両方入れてみたら?

621
デフォルトの名無しさん[sage]   投稿日:2014/01/31 02:35:49
rubyのobject.methodsみたいにCLOSオブジェクトに適用可能なメソッドを調べ上げる方法はないんでしょうか。
コメント1件

622
デフォルトの名無しさん[sage]   投稿日:2014/01/31 13:21:29
>621
MOP の SPECIALIZER-DIRECT-METHODS とか SPECIALIZER-DIRECT-GENERIC-FUNCTIONS
とかじゃダメ?
CLOS が PCL ベースのやつだとサポートしてそうだが…
コメント1件

623
デフォルトの名無しさん[sage]   投稿日:2014/02/01 01:11:52
>622
ありがとうございます!まさにこれでした。

(defclass hoge nil nil)
(defmethod hoge-method1 ((h hoge)))
(defmethod hoge-method2 ((h hoge)))
(defparameter hoge-instance (make-instance 'hoge))

(moptilities::specializer-direct-methods (class-of hoge-instance))
=> (#<STANDARD-METHOD HOGE-METHOD2 (HOGE) {10041BCD43}>
#<STANDARD-METHOD HOGE-METHOD1 (HOGE) {1004145BC3}>)
コメント2件

624
デフォルトの名無しさん[]   投稿日:2014/02/01 02:03:45
>623
頭も悪い、やる気もないならプログラミングなんかやめれば?
お前みたいな奴が書き込むだけでスレのレベルが下がるんだよ
コメント1件

625
デフォルトの名無しさん[sage]   投稿日:2014/02/01 02:15:34
最近、スルー検定が増えたな

626
デフォルトの名無しさん[sage]   投稿日:2014/02/01 03:46:57
>623
感謝とかいらないからhoge厨は二度とくるな。

627
デフォルトの名無しさん[sage]   投稿日:2014/02/01 04:26:15
オブジェクトのスーパークラスやサブクラスを取得するのにもmoptilitiesが必要なんだよな。
流石にそういうのは標準で入れておいてほしい。
コメント1件

628
デフォルトの名無しさん[sage]   投稿日:2014/02/01 08:19:09
>624
質問です、よろしくお願いします

カラス、下痢と言わずに
カー、クダーというのはおかしいと思います
どしてそんな非国民言葉がリスプでは使われているんですか?
コメント1件

629
デフォルトの名無しさん[sage]   投稿日:2014/02/01 08:24:51
>627
(use-package :sb-mop) とか (use-package :mop) とかするだけちゃうん?

630
デフォルトの名無しさん[sage]   投稿日:2014/02/01 10:17:42
>628
ポッポと管だと国家が滅ぶからだろ

631
デフォルトの名無しさん[sage]   投稿日:2014/02/01 12:36:45
first, restの方がすぐ意味が分かっていいよな

632
デフォルトの名無しさん[sage]   投稿日:2014/02/01 12:41:27
概念として異なる
俺はcar/cdrがいい

一穴主義、女は一人、セルも一つ!

restだあ?
浮気者!
コメント1件

633
デフォルトの名無しさん[sage]   投稿日:2014/02/01 13:49:07
>632
そのレジスタが残ってるCPUがまだ現役だったらかなり怖い

634
デフォルトの名無しさん[sage]   投稿日:2014/02/01 16:15:21
firstとrestは5字と4字なので並べるとズレて気持ち悪い

635
デフォルトの名無しさん[sage]   投稿日:2014/02/01 18:37:39
LP64な環境だとレジスタが64ビットでintが32ビットだからレジスタに2ワード入るのでちょっとそれっぽい
コメント1件

636
デフォルトの名無しさん[sage]   投稿日:2014/02/02 13:45:14
>635
ポインター 2 個入らんやん
コメント1件

637
デフォルトの名無しさん[sage]   投稿日:2014/02/02 13:50:51
>636
ヒープを一回しか取得しないなら32ビットオフセット2つで管理すればよくね?
そんなのやだけど

638
デフォルトの名無しさん[sage]   投稿日:2014/02/02 13:54:00
32ビットモードでも64ビットレジスタを使うことは出来るのです!
インストラクションにサイズプレフィックスが付くのでちょっと非効率かもしれないけど。
コメント3件

639
デフォルトの名無しさん[sage]   投稿日:2014/02/02 14:10:34
>638
それLP64いわなくね?

640
デフォルトの名無しさん[sage]   投稿日:2014/02/02 14:13:36
IP32L64ェ

641
デフォルトの名無しさん[sage]   投稿日:2014/02/02 19:32:47
>638
SPARC とか Power とか ARM あたりだと無理だよね

642
デフォルトの名無しさん[sage]   投稿日:2014/02/02 23:38:40
>638
x86 の話?
REX prefix って 32bit モードだと別の命令にマップされてない?
x32 と勘違いしてない?

643
デフォルトの名無しさん[sage]   投稿日:2014/02/08 22:16:26
64ビット符号無し整数って使えないの?
リバーシをビットボードで扱ってみたいんだけど

644
デフォルトの名無しさん[sage]   投稿日:2014/02/08 22:34:16
SBCLかCMUCLのどっちが数値計算ライブラリが多いの

645
デフォルトの名無しさん[sage]   投稿日:2014/02/11 00:30:15
ライブラリが規格に沿って書かれていればどちらでも動くと思うが・・・
線形代数ライブラリならf2clのlapackを使えばいいのかな

646
デフォルトの名無しさん[sage]   投稿日:2014/02/11 01:24:35
Emacsで選択範囲部分の四則計算を行なえるようにしたいのですが、
どのように記述すれば良いでしょうか?

(defun my-calc-region (start end)
(interactive "r")
(setq answer (buffer-substring start end))
;;なんらかの処理
(kill-new answer);;回答をkill-ringに
)

たとえば100*200+300*400を範囲選択すれば、
140000がkill-ringに入るようにしたいです。
コメント1件

647
デフォルトの名無しさん[sage]   投稿日:2014/02/11 02:36:43
>646
こういうこと書くと吝嗇・非友好的と取られるかも知らんけど、まずは下記のスレで聞いてきて

【GNU】Emacs Lisp 【Elisp】
コメント1件

648
デフォルトの名無しさん[sage]   投稿日:2014/02/11 12:44:52
>647
あ、はい
了解しました。

649
デフォルトの名無しさん[sage]   投稿日:2014/02/11 22:39:49
lisp無職はlispで金稼ごうとは考えないの?

650
デフォルトの名無しさん[sage]   投稿日:2014/02/11 22:55:30
最近は Clojure を使う仕事がほんの少しはあるからそっちかな

651
デフォルトの名無しさん[sage]   投稿日:2014/02/12 06:50:46
女が稼いでくれるから

652
デフォルトの名無しさん[sage]   投稿日:2014/02/12 10:53:32
Lispエイリアンってパブリックドメイン立ったのか

653
デフォルトの名無しさん[sage]   投稿日:2014/02/12 10:54:06
×立った
○だった

654
デフォルトの名無しさん[sage]   投稿日:2014/02/12 14:10:02
あんなもんに版権設定してどうするw
コメント1件

655
デフォルトの名無しさん[sage]   投稿日:2014/02/12 14:16:52
Lispを学べば東大女とやれる
俺はそう聞いたから今年からLispをはじめた
チンチンいじりながらコンスセル
今日悟った。リストなんて実は無いんだ!
それはたかだか一つのセルの表現形式でしかないんだと。
そして思ったね。
東大女はこんなおれにクラっときて足を開くんだと。
頑張るぜ

656
デフォルトの名無しさん[sage]   投稿日:2014/02/12 15:39:39
東大女となんてやりたいか?

657
デフォルトの名無しさん[sage]   投稿日:2014/02/12 18:51:15
学歴高い女とやるのは征服感があってなかなかよろしい

658
デフォルトの名無しさん[sage]   投稿日:2014/02/12 19:14:41
>654
漫画家の描いたキャラなのにわざわざパブリックドメインだと明記するのは珍しくね?

確かに版権気にするようなものじゃないけど

659
デフォルトの名無しさん[sage]   投稿日:2014/02/16 22:50:50
(ql:quickload :cl-ppcre)
(ppcre:scan "[^+-<>]" "abc") ;=> 0
(ppcre:scan "[^+-<>]" "...") ;=> NIL

SBCLですが二番目がNILになってしまいます。
0が帰ってきて欲しいのですが、皆さんの環境ではうまく動きますか?

660
デフォルトの名無しさん[sage]   投稿日:2014/02/16 22:52:10

661
659[sage]   投稿日:2014/02/16 23:02:30
>660
エスケープはバックスラッシュが2個いるのですね。
ありがとうございました。

662
デフォルトの名無しさん[]   投稿日:2014/02/17 12:44:39
LISPっぽいの作っているけどGC用の情報ってセルの構造体に含ませればいいかな
初めて作るもんでよくわからんのだが

663
デフォルトの名無しさん[sage]   投稿日:2014/02/17 14:52:16
ガベージとかガーベージとかで探せば色々ある
http://seesaawiki.jp/w/author_nari/
コメント1件

664
デフォルトの名無しさん[]   投稿日:2014/02/17 16:02:07
>663
いやアルゴリズムはわかるんだわ。
マークアンドスイープってやつにしようと思うんだけど、
そのマークをどこにするかってことなんだ。

665
デフォルトの名無しさん[sage]   投稿日:2014/02/17 17:25:51
セルの構造体に含ませる方法でいいよ
コメント1件

666
デフォルトの名無しさん[sage]   投稿日:2014/02/17 23:29:35
初めて作るんなら >665 でいいと思う。
もっと手抜きして Boehm GC もいいと思う。
コメント1件

667
デフォルトの名無しさん[sage]   投稿日:2014/02/17 23:59:51
>666
たとえば他にはどんなアプローチがありますか

668
666[sage]   投稿日:2014/02/18 01:10:51
ビットマップを別に用意して、そこにマークビットを置く方法がある。
キャッシュメモリとか OS の copy on write とかとの相性で、
そっちの方が高速に動作する。
もちろん上手く実装すれば、だけど。
コメント1件

669
デフォルトの名無しさん[sage]   投稿日:2014/02/18 10:46:22
まー、そういったのは高速化手法であって、最初にとにかく作ってみようと
いう人があまり意識してもしょうがない。

あと、Lispとかの実装技法としては、オブジェクトじゃなくポインタの側に情報を
持たせる方法もあるけど、アーキテクチャに依存してトリッキーになるから、
オブジェクトの側に持たせればいい。
コメント1件

670
デフォルトの名無しさん[]   投稿日:2014/02/18 13:31:23
>668
>669

Thx!おkわかった実践してみゆお

671
デフォルトの名無しさん[sage]   投稿日:2014/02/19 02:33:55
オブジェクトに持たせると、forkしたあとgcするとぐんにょりするのだ…。

672
デフォルトの名無しさん[sage]   投稿日:2014/02/19 15:56:40
再帰は楽しいが、遅いんだね
再帰的定義をした後にwhile版を定義して速度比較しながら勉強してる。
コメント1件

673
デフォルトの名無しさん[sage]   投稿日:2014/02/19 18:01:30
関数プログラミングの勉強なら、再帰を直接使わず高階関数を使って、
再帰を陽に書くのを減らしてゆく、というのが王道。
コメント1件

674
デフォルトの名無しさん[sage]   投稿日:2014/02/19 18:47:15
>672
末尾再帰最適化する実装ならそんなに変わらないと思っていたが、そうでもないのかな。
コメント2件

675
デフォルトの名無しさん[sage]   投稿日:2014/02/19 19:25:05
>673
>674
初心者なので言われていることがサッパリわからない。言葉だけでも頭の中に入れておく。ダンケ

676
デフォルトの名無しさん[sage]   投稿日:2014/02/19 19:55:33
>674
末尾呼び出しをジャンプにする最適化が効いてるかどうかをチェックしてからの
比較でないと、なんとも言えないと思う。

677
デフォルトの名無しさん[sage]   投稿日:2014/02/19 20:19:04
> 末尾再帰最適化する実装ならそんなに変わらない
賢いコンパイラなら同じコードに落ちるけど

678
デフォルトの名無しさん[sage]   投稿日:2014/02/19 20:31:30
単に末尾再帰で書いてないとか

679
デフォルトの名無しさん[sage]   投稿日:2014/02/19 20:54:08
一般論として、例えばこんなコードがあったとして、

(defun my-for-each (fn lst)
 (when lst
  (funcall fn (car lst))
  (my-for-each fn (cdr lst))))

fn に my-for-each を定義する関数が渡されることがある。
例えば、

(my-for-each
 (lambda (a)
  (print a)
  (defun my-for-each (fn lst) nil))
 '(a b c))

このような場合、ループせずに一回目の呼び出しで終了しなきゃならない。
つまり my-for-each は末尾再帰ではなく、末尾呼出と呼ぶべきもの。
で、末尾呼出はただのジャンプ命令に変換しちゃいけない。
毎回同じ場所にジャンプできるとは限らないし、
arity の違う関数に束縛されてるかもしれないから。

一応 Common Lisp では
「関数fの呼び出し中にfの束縛が変更されないと仮定してよい」
というような規則があるので、
コンパイラによってはループに変換するかもしれない。
でもそれはコンパイラの方針によるのであって、
「賢いコンパイラなら」というのは誤り。
動的なコード変更を重視する処理系なら、このような仮定はしない。

まあ、色々あって、Common Lisp では再帰とループは使い分けるのが普通だと思う。
コメント1件

680
デフォルトの名無しさん[sage]   投稿日:2014/02/19 21:28:35
処理系実装の話になると元気になるの、ワロタ

681
デフォルトの名無しさん[sage]   投稿日:2014/02/19 23:34:14
>679
この書き込みを理解できるようになるのが一つの目標だ
ガンバるぞ

682
デフォルトの名無しさん[sage]   投稿日:2014/02/21 01:19:57
再帰とループが違う例としては動的すぎる気が。もっと簡単な例ないかな。

683
デフォルトの名無しさん[sage]   投稿日:2014/02/21 16:30:11
http://hylang.org/

使っているディストリに最近入った。

python で書かれた lisp 方言

684
デフォルトの名無しさん[sage]   投稿日:2014/02/21 16:51:17
pythonをS式で書けるようになっただけ?

685
デフォルトの名無しさん[sage]   投稿日:2014/02/22 17:57:38
初心者はこっちだったのか

686
デフォルトの名無しさん[sage]   投稿日:2014/02/22 19:11:07
お前らcl21のことどう思ってんの?
コメント1件

687
デフォルトの名無しさん[sage]   投稿日:2014/02/22 21:41:51
頭が悪いからなかなか進めない
頭が良い人はいいなあ。
折れもさんざん頭が良いと言われてきたけれど、それはなんとなく「普通」の人と較べてで、
パッパと進んでいくには
「人間じゃない」レベルの頭の良さがいる。
はあ、そう生まれた人はいいなぁ
ま、仕方ないのでじっくりと時間をかけてなんどもやって、少しずつ直感化していく。
コメント1件

688
デフォルトの名無しさん[sage]   投稿日:2014/02/22 22:38:44
>687
みんな過程ではそう思う。
どう頑張っても積み上げ以上のことはできないんだから。

689
デフォルトの名無しさん[sage]   投稿日:2014/02/22 23:04:34
適当なもの作って「俺意外に出来るな」って勘違いすることも大事だと思うよ

690
デフォルトの名無しさん[sage]   投稿日:2014/02/22 23:21:29
訳分からん→時間をかけてようやく理解→全能感→さらなる課題を発見→訳分からん→以下ループ

691
デフォルトの名無しさん[sage]   投稿日:2014/02/22 23:31:58
あるある。

692
デフォルトの名無しさん[sage]   投稿日:2014/02/23 21:57:11
「リスト遊び」何とか最後までやった。本の後半を消化するまで後二週間くらいかかるかな。
しめて二ヶ月。
次は「初めての人のためのLisp」か「Schme手習い」をやってみよう。もう、どっちも手元にある。
亀の歩みだけども、じりじり前進。

693
デフォルトの名無しさん[]   投稿日:2014/02/26 11:01:38
Windows(ccl) で cl-mysql を使いたいのですが、UTF8の文字が ? になってしまいます。
MySQL、ccl、slime は UTF8 に設定しているつもりなのですが他にも設定が必要なところがあるのでしょうか。

694
デフォルトの名無しさん[sage]   投稿日:2014/02/26 20:31:57
chcp 65001
コメント1件

695
デフォルトの名無しさん[sage]   投稿日:2014/02/26 21:44:15
コマンドプロンプトとか言うゴミみたいなターミナルはどうにかして欲しいところ

696
デフォルトの名無しさん[]   投稿日:2014/02/27 01:18:36
なるほどコマンドプロンプトの文字コードの設定があるんですね。
これはどのように設定すれば良いのでしょうか。
slime とかに設定するものなのでしょうか。
コメント1件

697
デフォルトの名無しさん[sage]   投稿日:2014/02/27 06:37:58

698
デフォルトの名無しさん[sage]   投稿日:2014/02/27 15:59:55
set-macro-characterとかで設定したリードマクロって
パッケージをまたいでグローバルに作用しているようなんですが、
自分でリードマクロを定義すると他のライブラリを読み込んだときかなりの割合でマクロ文字が衝突します。
安全なリードマクロの書き方ってあるんでしょうか。
コメント2件

699
デフォルトの名無しさん[sage]   投稿日:2014/02/27 23:12:43
俺は使ったことないんだけど、
readtable まわりを弄るんだったと思う。

700
デフォルトの名無しさん[]   投稿日:2014/03/01 17:22:51
>698
他のライブラリを読み込むときだけリードテーブルを初期状態に戻せばいいのかなと。

(let ((*readtable* (copy-readtable nil)))
(ql:quickload "my-favorite-library"))

701
デフォルトの名無しさん[sage]   投稿日:2014/03/01 22:38:48
なるほど

702
デフォルトの名無しさん[sage]   投稿日:2014/03/02 22:31:51
>698
named-readtablesとかcl-syntaxとか使って管理
使うときだけ有効化

703
デフォルトの名無しさん[sage]   投稿日:2014/03/03 09:29:44
Lispの悟りについて語ってください

704
デフォルトの名無しさん[sage]   投稿日:2014/03/03 10:23:15

705
デフォルトの名無しさん[sage]   投稿日:2014/03/03 12:40:41
無を発掘して知ることだ。

706
デフォルトの名無しさん[sage]   投稿日:2014/03/03 15:49:19
nil を煮る。

707
デフォルトの名無しさん[sage]   投稿日:2014/03/03 20:36:35
ウェイトレス:お飲み物はコーヒーで良いですか?
Lisper:T
その後紅茶を黙って飲む事が悟りだ

708
デフォルトの名無しさん[sage]   投稿日:2014/03/03 23:45:01
開発環境の設定の質問をします
emacsでcommon lispを使っています
common-lisp-hyperspec-formatをときたま使うのですが
これでcontrol characterの項目を選択するとウェブブラウザで開いてしまいます
http://lispuser.net/emacs/lisphacking.html
これのhyperspecの設定をしたおかげで
slime-hyperspec-lookupの方はemacs-w3mで見ることができ、かなり使いやすいです
common-lisp-hyperspec-formatもemacs-w3mで開くにはどう設定すればよいですか?
コメント1件

709
デフォルトの名無しさん[sage]   投稿日:2014/03/04 06:20:39
>708
そのページに書いてある設定でいいと思うけど?

(setq browse-url-browser-function 'w3m-browse-url)

試してみたけど、この設定で slime-documentation-lookup と common-lisp-hyperspec-format の両方に反映されたよ。
コメント1件

710
デフォルトの名無しさん[sage]   投稿日:2014/03/04 22:13:36
common lispのバッククォートとアンクォートの動作がよくわかりません
(setq q '(a b c))
``(,q)
を評価すると`(,q)になるのがよくわかりません
`xを(backquote x)
,xを(unquote x)で表わすと
(backquote (backquote ((unquote q))))で評価すると
(backquote (q))で
`(q)になるはずなんですがなぜbackquoteの内側の(unquote q)は評価されてqにならないんでしょう

711
デフォルトの名無しさん[sage]   投稿日:2014/03/04 23:59:37
前スレで似たような質問に答えた気がする。
流れてると思うからもう一度。

backquote の仕様はこれ。
http://www.lispworks.com/documentation/HyperSpec/Body/02_df.htm

``(,q)
== `(APPEND (LIST Q) NIL)) ; `は内側から先に展開される仕様
== (APPEND '(APPEND (LIST Q) NIL) NIL)
これを eval すると
=> (APPEND (LIST Q) NIL)

一方
`(,q)
== (APPEND (LIST Q) NIL)
で、 ``(,q) の評価結果と等しい。
なので結果が `(,q) になるのは正しい。

実際には出てくる結果がequalの意味で等しければ
処理系は好きに変換していいことになっている。
なので、処理系によっては結果は `(,q) でないかもしれない。
コメント1件

712
デフォルトの名無しさん[sage]   投稿日:2014/03/05 00:10:30
>686
CLには正規表現やらネットワーク周りやら標準では入ってないので
そういうライブラリを組み込んだ上で新言語と称したものがあってもいいと思うし
初心者にはアピールすると思う。

713
デフォルトの名無しさん[sage]   投稿日:2014/03/05 00:33:38
私にはLispを信仰することはできなさそうだ

714
デフォルトの名無しさん[sage]   投稿日:2014/03/05 00:41:55
>709
すみません
確かに両方に反映されていました
失礼しました

715
デフォルトの名無しさん[sage]   投稿日:2014/03/05 17:12:07
>711
ありがとうございます
backquoteを仕様通りに展開するとうまく動作するのは分かりましたが
let over lambdaで言われてるように動作を予測するのは難しいですね
外側のbackquoteと内側のunquoteを対にして読めばいいんでしょうか

716
デフォルトの名無しさん[sage]   投稿日:2014/03/06 16:58:19
今日からScheme手習いで勉強はじめた
訳本より原著の方が良さげだけど高いからいいや

717
デフォルトの名無しさん[sage]   投稿日:2014/03/08 00:32:28
原著は口語英語チックで俺はちょっとキツかった。
訳本の方が良いと思う。

718
無職[]   投稿日:2014/03/08 18:03:46
だれか教えて下さい。
clispでの入力履歴を、
前回に立ち上げていた時までさかのぼるには
どうするのでしょうか。
再インストールしたら出来なくなりました。
よろしくおねがいします。

環境
osx 10.6.8
CLISP 2.49

719
デフォルトの名無しさん[sage]   投稿日:2014/03/08 18:11:45
rlwrap使えばいいよ
コメント1件

720
無職[]   投稿日:2014/03/09 11:19:13
>719
ありがとうございます。
忘れていました。思い出しました。
素早い返答、感謝します。
2ちゃんていいですね。
コメント1件

721
デフォルトの名無しさん[sage]   投稿日:2014/03/09 11:46:07
>720
悶絶フグの悟りもいいぞ

722
デフォルトの名無しさん[sage]   投稿日:2014/03/09 13:24:10
Scheme手習いってコモンリスパーにも役たつの?

723
デフォルトの名無しさん[sage]   投稿日:2014/03/09 15:06:10
やくにたつ

724
デフォルトの名無しさん[sage]   投稿日:2014/03/10 17:17:34
ていうか、再帰とリスト処理の基礎を徹底的にやる。どういうLisp方言かは関係ない。

725
デフォルトの名無しさん[sage]   投稿日:2014/03/10 17:21:11
あれは徹底的にやるのはlambda式とクロージャが中心だけどな。
コメント1件

726
デフォルトの名無しさん[sage]   投稿日:2014/03/10 17:30:57
ほぉ、そうなのか

727
デフォルトの名無しさん[sage]   投稿日:2014/03/10 17:59:19
ラムダ式とクロージャはSeasonedじゃなかったか。

728
デフォルトの名無しさん[sage]   投稿日:2014/03/10 23:49:19

729
デフォルトの名無しさん[sage]   投稿日:2014/03/11 20:46:44
別のパッケージ同士でシンボルを使おうとしたらパッケージ名::シンボル名になってて
eqがtにならないので嵌ったんだけどこういうのはキーワードシンボルで扱えばいいの?
コメント1件

730
デフォルトの名無しさん[sage]   投稿日:2014/03/11 22:05:11
>729
キーワードでも良いけど、シンボルプール用のパッケージを別途作って
そのパッケージを件のパッケージ群からuseしても良い。
そういう用途ならexternしないで意図的にパッケージ名付でアクセスするのも衛生的で良いかもしれない

731
デフォルトの名無しさん[sage]   投稿日:2014/03/11 22:11:53
そういうやり方は思い付かなかった
すっきり書けそうありがとう

732
デフォルトの名無しさん[]   投稿日:2014/03/12 16:22:32  ID:weuLszB+.net
hunchentootで今のURLを取得するにはどうすればいいですか?

733
デフォルトの名無しさん[sage]   投稿日:2014/03/13 19:32:07  ID:WEwvXz1V.net
こんどは、

Lisp Flavored Erlang
http://lfe.github.io/

だって。

なんだかんだ言って、lisp って人気者なんじゃね?

734
デフォルトの名無しさん[sage]   投稿日:2014/03/13 20:43:18  ID:hR60BOrR.net
erlangの根底の考え方大好きなんだけど文法がどうしてもなじめなかった自分はすげーうれしい
ちなみに同じ理由でMLとかHaskellもなじめない orz

735
デフォルトの名無しさん[sage]   投稿日:2014/03/16 01:03:58  ID:eFgBNCjO.net(2)
loopマクロで
(loop for i from 1 to 10 collect i)
みたいにiを1から10の範囲でなにかをすることは出来るのに
(loop for i from 10 to 1 collect i)
みたいな書き方は出来ないけどこれと同じことはloopマクロで出来ない?

736
デフォルトの名無しさん[sage]   投稿日:2014/03/16 01:20:52  ID:/lHtCGez.net
(loop for i from 10 downto 1 collect i)
でいい?

737
デフォルトの名無しさん[sage]   投稿日:2014/03/16 01:23:47  ID:eFgBNCjO.net(2)
専用のトークンあったのか
land of lispのloopマクロ周期表にもあったのに見逃がしてた
助かったよありがとう

738
デフォルトの名無しさん[sage]   投稿日:2014/03/17 01:40:49  ID:RttHywCL.net
ときどきでいいので upfrom や downfrom のことも思い出してあげてくだ(ry

739
デフォルトの名無しさん[sage]   投稿日:2014/03/19 04:12:32  ID:g+2MOTll.net
3年ぐらいCommon Lispから離れてたのですが
何か大きな変更ありました?
パッケージが色々変わったという噂は聞くのですが

740
デフォルトの名無しさん[sage]   投稿日:2014/03/23 16:44:04  ID:WrP7umWr.net(2)
商と余りを求めるfloorとtruncateは名前が違うだけですか?
それとも何か違いがあるのでしょうか

741
デフォルトの名無しさん[sage]   投稿日:2014/03/23 16:52:59  ID:ZhYebgxz.net
以下のように、負の場合に違う。

> floor converts its argument by truncating toward negative infinity;

> truncate converts its argument by truncating toward zero;
コメント1件

742
デフォルトの名無しさん[sage]   投稿日:2014/03/23 17:18:35  ID:yZpn4CJQ.net(3)
'((1 a) (2 ab) (3 b) (4 a))
'((4 a) (1 ab) (1 a) (3 c))
のような二つのリストに対して
equalなものだけを抽出したリスト
'((1 a) (4 a))を返したいのですが
lispらしいやり方ってどういうものですか?

743
デフォルトの名無しさん[sage]   投稿日:2014/03/23 18:16:39  ID:R1nWQ7zs.net
(intersection '((1 a) (2 ab) (3 b) (4 a)) '((4 a) (1 ab) (1 a) (3 c)) :test #'equal)
コメント1件

744
デフォルトの名無しさん[sage]   投稿日:2014/03/23 18:22:29  ID:yZpn4CJQ.net(3)
>743 ありがとうございます!
お、おそろしい...(笑)
そんなに簡単にできるとは...
コメント1件

745
デフォルトの名無しさん[sage]   投稿日:2014/03/23 18:43:49  ID:wmMizYQu.net
>744
intersection について、注意点が二つ。

1. 順序は保持されない。
2. リストに重複要素がある場合、結果のリストにも重複が含まれるかもしれないし、
そうでないかもしれない。

http://www.lispworks.com/documentation/lw51/CLHS/Body/f_isec_.htm
> If one of the lists contains duplicate elements, there may be duplication in the result.

例えば:

(intersection '(a b a) '(a))
;=> (A A)
(intersection '(a) '(a b a))
;=> (A)

Common Lispには他にもリストの要素を集合と看做して扱う一通りの函数が揃っているので、
覚えておくと役立つと思うよ。

CLHS: Section 14.1.2.2 Lists as Sets
http://www.lispworks.com/documentation/lw51/CLHS/Body/14_abb.htm
コメント1件

746
デフォルトの名無しさん[sage]   投稿日:2014/03/23 18:51:36  ID:yZpn4CJQ.net(3)
>745
なるほど、、注意します。

一覧のページ、助かります!
ありがとうございます。

747
デフォルトの名無しさん[sage]   投稿日:2014/03/23 19:40:17  ID:WrP7umWr.net(2)
>741
ありがとうございます。知りませんでした。勉強になります。

748
デフォルトの名無しさん[sage]   投稿日:2014/03/23 22:17:49  ID:Od1LbvNu.net(2)
関数fとgがあるときにfの中でg、gの中でfを呼び出したら
どっちかを先に定義しないとダメだけどそれだと先に定義したほうで警告が出てしまう
これをfletやlabelsを使う以外にうまく書く方法はありますか

749
デフォルトの名無しさん[sage]   投稿日:2014/03/23 22:51:07  ID:l/Ev+gij.net
clips だとそもそも警告でない。
SBCL なら
(declaim (ftype function g))
とか書くといいよ。

750
デフォルトの名無しさん[sage]   投稿日:2014/03/23 23:03:18  ID:Od1LbvNu.net(2)
ありがとうございました
declaimは型宣言で複雑だと思って避けてましたが省略できるんですね

751
無職[]   投稿日:2014/03/24 14:40:40  ID:02bTSQQc.net
CLOSの疑問。
スロットオプションの :initarg :reader :writer など冗長だと思いました。
構造体のコンストラクタやメンバへのアクセサ、型判定関数の
自動生成などは便利だと思うのですが、CLOSはなぜこうなのでしょうか?
いきさつなど、わかる方いますか?
また、CLOSに限らずですが、SETFを徹底的に使いまわすのはなぜですか?
クラスにでも構造体にでもメンバはすべて、
読み出し関数と代入関数の自動生成、以上。
と、してくれたら明快なのにと思ってしまいます。
私が無知なのでしょうか?教えて下さい。

752
デフォルトの名無しさん[sage]   投稿日:2014/03/24 15:13:02  ID:or0yrghg.net
CLOSはもともとLisp向けのOOPLとして設計されたのではなくて、
Lisp向けOOPLS群を記述するための最小メタOOPLとして設計された。

だから自動生成するための道具は揃えたから。自動生成が欲しければ自分で書いてねって主義。
みんなでいいの作ったらそれを集めて取捨選択すればLisp向け標準OOPLが出来るだろうと。
かつてのLispがそうだったように。

けどCLOS作ったらCLOSで良くなってしまって後が続かなかった。

自分で書くと言っても難しくない?って疑問への答えがPortable CommonLoops実装。

753
デフォルトの名無しさん[sage]   投稿日:2014/03/28 17:27:22  ID:32AHAEOu.net
オブジェクトを1つ取り、2つにして返すリードマクロを書く方法はありますか?
例えば、$を欲しいリードマクロとすると次のように評価されるものです
'(obj1 $obj2 ($obj3) obj4) => (obj1 obj2 obj2 (obj3 obj3) obj4)

754
無職[]   投稿日:2014/04/01 10:47:18  ID:18w+IeRp.net
処理系によって動作を変える書き方、
わかる方いらっしゃいますか?
clispならこうなって、
sbclならああなって、
Clozure CLなら、、、という風に。
探し方が悪いのか辿りつけません。
よろしくおねがいします。
コメント1件

755
デフォルトの名無しさん[sage]   投稿日:2014/04/01 11:10:19  ID:jRPbDO4g.net
グローバルな定数 *FEATURS* に、実装依存の機能とかを示すシンボルが
登録されているけど、それに最低ひとつ含まれている、その処理系を示す
シンボルを使う、という解でいいのかな?

756
デフォルトの名無しさん[sage]   投稿日:2014/04/01 12:01:24  ID:UNDMPLZZ.net
>754
(progn
#+sbcl (print "sbclで実行されるよ!")
#-sbcl (print "sbclで実行されないよ!")
#+(and sbcl clisp) (print "sbclとclispで実行されるよ!")
#+(and win32 (or sbcl ecl)) (print "こんな条件もしてできるよ!"))

757
デフォルトの名無しさん[sage]   投稿日:2014/04/02 19:05:18  ID:VT3df3PV.net
Lisp使いは特別にワタシをナメさせてあげるわ
ただし、ワタシを擁護するのよ


       / ̄ ̄ ̄\
     /ノ / ̄ ̄ ̄\
    /ノ / /        ヽ
    | /  | __ /| | |__  |
    | |   LL/ |__LハL |
    \L/ (・ヽ /・) V
    /(リ  ⌒  ●●⌒ )   
    | 0|     __   ノ    あんたもナメたいんでしょ♪
    |   \   ヽ_ノ /ノ    
     ノ ノノ_.\___ _ ノ( ((
   ( ((/   /   ├─-..,
   )/ ゝ ¬  ,r一     )
    |ノ          r" /
   /             `y
   {  c    |   c    |
   ゝ     人     丿
    `- ー'   \ __,. ィ
      ゝ         / /
     /    ρ   /ノ
   /        〈

758
デフォルトの名無しさん[sage]   投稿日:2014/04/05 09:24:45  ID:bt1jJ+tr.net
これまで(lisp-implementation-type)と(lisp-implementation-verion)でがんばってたわ・・・

759
デフォルトの名無しさん[sage]   投稿日:2014/04/05 15:12:59  ID:LR1Bc15I.net
(setf a '+ b 1 c 2)として
(eval (a b c))が展開されて(+ 1 2)にならない。
(eval ‘(,a b c))ならできるんだけど、上の形で展開できるようにするにはどうしたらいいかな。

760
デフォルトの名無しさん[sage]   投稿日:2014/04/05 15:27:08  ID:8Jv1du8q.net
(funcall a b c) じゃダメなん?

761
デフォルトの名無しさん[sage]   投稿日:2014/04/06 00:12:54  ID:yLnxeWdp.net
(eval (list a b c))

762
デフォルトの名無しさん[sage]   投稿日:2014/04/06 01:14:16  ID:axzLjJsV.net
すいません。ちょっとちがった。
(progv '(a b c d) '(1 + 2 3)
(eval (eql (b a c) d)))が真になるようにしたい。
コメント1件

763
デフォルトの名無しさん[sage]   投稿日:2014/04/06 11:29:16  ID:ww3yjEEU.net
基本的な事を色々勘違いしてないか?

764
デフォルトの名無しさん[sage]   投稿日:2014/04/06 15:34:12  ID:SoAcTpCI.net
>762
その俺様evalをマクロで再定義するんだな。

765
デフォルトの名無しさん[sage]   投稿日:2014/04/06 17:22:01  ID:s8bztINg.net

766
デフォルトの名無しさん[sage]   投稿日:2014/04/07 10:30:58  ID:kcDbzeNy.net
>725
へ?
へへへのへ?

まさか、最初から
(define foo
(lamda ()))
だからとか?

767
デフォルトの名無しさん[]   投稿日:2014/04/13 21:19:18  ID:opL5E73o.net
Lisp使いが滅多に表に出てこないのは社内で開発支援ツールを
作ったりしているからってホント?
それとも基本的には純粋に道楽で使うものなの?
コメント1件

768
デフォルトの名無しさん[sage]   投稿日:2014/04/13 21:44:45  ID:mU5oY4uE.net(2)
>767
皆シャイなんだってばよ!

769
デフォルトの名無しさん[sage]   投稿日:2014/04/13 21:48:51  ID:M5T5p9cM.net
自分でLisp実装するレベルじゃないとLisp使い名乗るのは恥ずかしい気がしてくる
コメント1件

770
デフォルトの名無しさん[sage]   投稿日:2014/04/13 22:00:17  ID:mU5oY4uE.net(2)
>769
おいらはCommonLispは作り込めないけど己をLisp使いだと思うけどなー
自前CommonLisp作れないと駄目とか言うと世界に何人いるんだろう?

#自前で多倍長整数とかRational表現組むだけで泣けるんですけど

771
デフォルトの名無しさん[sage]   投稿日:2014/04/13 22:05:46  ID:Wi1Vhylz.net
Lisp以外のこともちゃんと知っていないと、Lisp使いは名乗れないって思ってる

772
デフォルトの名無しさん[sage]   投稿日:2014/04/13 22:27:31  ID:CGkCJpU8.net
何を言ってるんだお前は。 LISPを使ってる人がLISP使いだろ。
そう、使おうとする心こそがLISP使いがLISP使いであるためのただひとつの資格さ!

773
デフォルトの名無しさん[sage]   投稿日:2014/04/13 23:04:02  ID:+E8lLswP.net
N88-BASIC使いの俺が通りますよ…

774
デフォルトの名無しさん[]   投稿日:2014/04/13 23:05:39  ID:kn+IksNB.net
Lispはマクロ用の言語として使われることが多いので、プログラマという感じじゃないのかも。
同じくマクロで使われるVBAもプログラマが使うわけじゃないし。

775
デフォルトの名無しさん[sage]   投稿日:2014/04/13 23:59:56  ID:eO4xe9Ol.net
単に母数が少ないだけじゃね

776
デフォルトの名無しさん[sage]   投稿日:2014/04/16 01:34:48  ID:4SiUGY6u.net
アレじゃね?CG屋にはLisperが多いっていう。
CGオーサリングツールにはLispのってるんじゃね??

777
デフォルトの名無しさん[sage]   投稿日:2014/04/16 05:50:50  ID:w7+StrcB.net
変換ミス修正版
Emacs Lispとかxyzzy Lispみて
マクロ言語とか言ってるんじゃないのか?VBA持ち出してるし
Lispの意味でのマクロの意味で使っているとは思えないな

778
デフォルトの名無しさん[sage]   投稿日:2014/04/16 18:18:55  ID:n6/2Qqwf.net
VBAはアプリケーション組み込みマクロ言語としてしか使えないかもしれんが
Lispは組み込みマクロ言語としても使えるが汎用言語だぞ

基本何にでも使える

779
デフォルトの名無しさん[sage]   投稿日:2014/04/16 22:19:02  ID:unZv5lM6.net
まあ、一番ユーザーが多いlispはelispだろうから、誤解されるのもしょうがないのかもね

780
デフォルトの名無しさん[sage]   投稿日:2014/04/17 01:24:10  ID:IbvTFaeD.net
世間一般じゃマクロといえばエクセルと言う印象なんだろうな
おれもlispを知らない頃はそう思ってた

781
デフォルトの名無しさん[sage]   投稿日:2014/04/17 16:51:59  ID:zyw99q6w.net(2)
elispで書くのはマクロじゃねーよ。
いつまでTECO引きずってんだ。
elispに今もあるマクロはdefmacroとkeyboard macroの二つだけ。
elisp infoやemacswikiのglossaryで確認しろ。
コメント1件

782
デフォルトの名無しさん[sage]   投稿日:2014/04/17 17:04:38  ID:xMLxyHMV.net(2)
>781
emacsのエディタマクロとlispのmacroが混線してない?

783
デフォルトの名無しさん[sage]   投稿日:2014/04/17 17:22:44  ID:NyU+/LXv.net
もうエディタマクロなんてないんだよ。
今あるのはキーボードマクロだけ。

784
デフォルトの名無しさん[sage]   投稿日:2014/04/17 20:33:44  ID:xMLxyHMV.net(2)
emacsってEditor MACroSの略だと思ってたけど今は昔なんやね。

785
デフォルトの名無しさん[sage]   投稿日:2014/04/17 20:37:34  ID:zyw99q6w.net(2)
TECOの時代は終わったのさ。

786
デフォルトの名無しさん[sage]   投稿日:2014/04/18 17:15:18  ID:Tf5Wc60A.net
Real programming languageで書いたコードはmacroじゃない。
コメント1件

787
デフォルトの名無しさん[sage]   投稿日:2014/04/18 18:33:29  ID:32S9ba0j.net(2)
>786
VBもPythonもエディタマクロに使われているけど全否定?

788
デフォルトの名無しさん[sage]   投稿日:2014/04/18 19:08:27  ID:RLtKHaB0.net
Lispのマクロについて根本的に誤認している人がいるようだ。
Excelのマクロ言語はVBAであるとか
wzeditorはC言語ライクなマクロ言語を持つとか
そういう意味じゃないからなあ
コメント1件

789
デフォルトの名無しさん[sage]   投稿日:2014/04/18 19:29:41  ID:32S9ba0j.net(2)
>788
elispはマクロじゃ無いって話の流れからついに一週してしもたかんじやね。

790
デフォルトの名無しさん[sage]   投稿日:2014/04/18 19:42:43  ID:Mcdvxl1M.net
emacs lispはemacsの機能を拡張するMacro言語であるようにみえる
emacs lispではLispのMacroが使用できる
emacsにはKeyboard Macroと呼ばれるキー入力シーケンスを保存して再現する機能がある
emacsの名前の由来になったMacroとは、かつてテキストエディタTECO上で動作する特殊なマクロ言語でemacsが実装されたことによる

上記四つのMacroは全部別のモノ
emacsの話を出すとMacroがややこしくなる

791
デフォルトの名無しさん[sage]   投稿日:2014/04/18 21:29:22  ID:RJBDeLhq.net(2)
マクロって命令の羅列のこと。
elispみたいな本格的なプログラミング言語のコードをマクロとは言わない。
コメント1件

792
デフォルトの名無しさん[sage]   投稿日:2014/04/18 21:31:08  ID:RJBDeLhq.net(2)
vimはマクロと言っているなあ。
もはや死語に近いだろうな。

793
デフォルトの名無しさん[sage]   投稿日:2014/04/18 23:11:58  ID:GBzJyQo4.net
Intel CPU のマクロフュージョンも取り上げてみたい。

794
デフォルトの名無しさん[sage]   投稿日:2014/04/19 10:31:46  ID:SVxJm38+.net
>791
>マクロって命令の羅列のこと。

より正確には、「拡張操作をパッケージ化したもの。またはその機能」
プログラミング言語での「操作」を、命令の羅列で表現する事がよく有るという事。
何に(言語、ツール)言及しているかによって、「拡張操作」の対象が変わるというだけ。

795
デフォルトの名無しさん[sage]   投稿日:2014/04/19 13:56:07  ID:z/3w4FOm.net
macro?/mak'roh/ [techspeak] /n./

A name (possibly followed by a formal?arg?list) that is equated to a text or symbolic expression to which it is to be expanded (possibly with the substitution of actual arguments) by a macro expander.
This definition can be found in any technical dictionary; what those won't tell you is how the hackish connotations of the term have changed over time.

The term `macro' originated in early assemblers, which encouraged the use of macros as a structuring and information-hiding device.
During the early 1970s, macro assemblers became ubiquitous, and sometimes quite as powerful and expensive asHLLs, only to fall from favor as improving compiler technology marginalized assembler programming (see?languages of choice).
Nowadays the term is most often used in connection with the C preprocessor, LISP, or one of several special-purpose languages built around a macro-expansion facility (such as TeX or Unix's [nt]roff suite).

Indeed, the meaning has drifted enough that the collective `macros' is now sometimes used for code in any special-purpose application control language
(whether or not the language is actually translated by text expansion),
and for macro-like entities such as the `keyboard macros' supported in some text editors (and PC TSR or Macintosh INIT/CDEV keyboard enhancers).

796
デフォルトの名無しさん[sage]   投稿日:2014/04/19 18:57:11  ID:2TBNSLSb.net
パッケージはないw
コメント1件

797
デフォルトの名無しさん[sage]   投稿日:2014/04/20 02:33:59  ID:jJiPXZnf.net
>796
「パッケージ管理システム」の"パッケージ"に限定しない話だろ?

798
デフォルトの名無しさん[sage]   投稿日:2014/04/20 11:52:28  ID:ikGZm3gS.net
限定しなくてもない。
マクロ化にパックの意味なんてない。

799
デフォルトの名無しさん[sage]   投稿日:2014/04/21 02:27:11  ID:fGRnx6yv.net
CLisp Win 64bit版の置き場を見つけられませんでした。
教えて下さい。初歩的な質問で申し訳無い。

800
デフォルトの名無しさん[sage]   投稿日:2014/04/21 08:47:59  ID:lFeTo/mg.net
ハンナ・ユスティーナ・マルセイユ

801
デフォルトの名無しさん[sage]   投稿日:2014/04/21 13:34:42  ID:bZ7teAnE.net
関数を返す関数の勉強のために
対話応答システムを作ってみたら
ゲロゲロの悲惨なものになった。ウーム。知らなさすぎる中で創るとわやになるな。
表示はdisplayのみ
キーボードからの入力はreadのみ

802
デフォルトの名無しさん[sage]   投稿日:2014/04/25 18:03:13  ID:6BEElz8i.net(2)
onlispの日本語訳はpdfやhtmlで無料で公開されてますが書籍と比べてどうですか
無料版だけで事足りますか
コメント2件

803
デフォルトの名無しさん[sage]   投稿日:2014/04/25 18:52:24  ID:NEPb//MG.net
>802
オンライン版を読んでから考えてみたら?
コメント1件

804
デフォルトの名無しさん[sage]   投稿日:2014/04/25 19:11:55  ID:6BEElz8i.net(2)
>803
継続まで読んだんですが両方一通り読んだことがある人の意見が欲しいんです
コメント1件

805
デフォルトの名無しさん[sage]   投稿日:2014/04/25 19:28:44  ID:Lv/ArU8B.net
英語版のon lisp基本にすれば、翻訳なんかなんでもいいような

806
デフォルトの名無しさん[sage]   投稿日:2014/04/25 20:07:20  ID:+TF8D1gC.net
>802
いろいろ気になる奴は書籍買え

807
デフォルトの名無しさん[sage]   投稿日:2014/04/28 10:23:07  ID:vtVIy75a.net
lighttableでlisp使えるようにならにゃいかな
コメント1件

808
デフォルトの名無しさん[sage]   投稿日:2014/04/28 10:29:57  ID:mheEU0a2.net
>804
折れは1今、継続、勉強中

なんかわけわからんな、なんだこれは!
と勉強してたら
col is short for collection
;"continuation"
とか出できて
「おお、これが継続ちゅうもんかい!」
とある意味感激した
折れも継続身につけるとこまで来たんやあ
「カーカー、おまえはカラスかい!
人間、なめとんのか!、()ばかりやないカー!」
とリスプに喧嘩売ってた時がなつかしい

809
デフォルトの名無しさん[sage]   投稿日:2014/04/28 21:22:46  ID:k3LtCAjB.net
>807
Clojure……(震え声

810
デフォルトの名無しさん[sage]   投稿日:2014/04/29 17:51:41  ID:UBPAuzy/.net
勉強も継続してください。

811
デフォルトの名無しさん[sage]   投稿日:2014/04/29 19:19:10  ID:NGZ8LFiM.net
onlisp書籍版は表紙がいいし手触りも良い。
持ち歩いてちょっと汚れや痛みが付いてきた頃の風合いも良い。
コメント1件

812
デフォルトの名無しさん[sage]   投稿日:2014/04/29 21:19:52  ID:TDR4lejK.net
>811
原典、翻訳本、どっち買ったの?

813
デフォルトの名無しさん[sage]   投稿日:2014/05/04 02:53:08  ID:6dfFx+9a.net
onlispのhtml版はあくまで草稿だから図が抜けてたりするし
オーム社から出てる紙の本か電子版を買った方がいいとおもう

onlispの継続の実装ってsbclに入れると警告出まくるよね
実際にはcl-contを使うのがよい

814
デフォルトの名無しさん[sage]   投稿日:2014/05/22 20:36:07  ID:l7dCfkj7.net
恥ずかしすぎて質問しにくいのですが・・・
xyzzyで

(ceiling 120)
120
0.0

(ceiling 312 2.6)
121
-2.599988

なぜ後者は120にならないのか、初歩すぎて検索しても見つからない TT

815
デフォルトの名無しさん[sage]   投稿日:2014/05/22 20:56:24  ID:Fu9GuZb0.net
ceilingは正の無限大に向けて丸めるからです。(切り上げ)
負の無限大に向けて丸めたければfloor、
0に向かって丸めたければtruncate、(小数部破棄=切り捨て)
一番近い整数に近づけたければroundです。(四捨五入)

816
デフォルトの名無しさん[sage]   投稿日:2014/05/23 01:09:56  ID:gWh9LE9u.net
いやそっちじゃなくて、
コンピュータ上でほとんど小数は近似値だよー、312/2.6=120.00001になっちゃうよー、って絡みの話では?
コメント1件

817
815[sage]   投稿日:2014/05/23 02:13:12  ID:Dj6yziyp.net
>816
なるほど 120.00001 になるんだったら120にならないのは当然ですね
近似値になるって事を考えて試行錯誤し
2.6 を 2.6001にすると言う適当な事で対処しました・・・

818
デフォルトの名無しさん[sage]   投稿日:2014/05/23 08:31:19  ID:S9ZhBRpZ.net
じゃなくて、四捨五入にしないと危ないだろそれ。
コメント1件

819
デフォルトの名無しさん[sage]   投稿日:2014/05/23 08:41:53  ID:UMGtPnEJ.net(2)
ラウンドやな
コメント1件

820
デフォルトの名無しさん[sage]   投稿日:2014/05/23 08:58:33  ID:UMGtPnEJ.net(2)
リスプ勉強始めました。まだリスプらしい発想ができず知識もないのですが、C言語でいう静的局所変数の実現方がわからず次のようにしてみました。
もっと、まともな方法有るでしょうか?

;;;隠れ引数cntを利用して静的局所変数を実現する
;;;
;;;目的のatomが与えられたlistの何番目にあるか?
;;;なければゼロを返す
;;;(member* 'c '(a b c d )) -> 3
;;;(member* 'x '(a b c d )) -> 0

(defun member* (x lst &rest cnt)
(if (null cnt) (setq cnt '(1)))
(cond
((null lst) 0)
((eq (car lst) x)
(car cnt))
(t
(member* x (cdr lst) (+ (car cnt) 1)))))
コメント2件

821
815[sage]   投稿日:2014/05/23 09:13:01  ID:5/FhmPgX.net
>818
なんて説明したら良いんだろう・・・
あるブラゲのカードの攻撃力を求める計算を良くするので
それを簡単に求めれないかと xyzzyのLisp入門見て関数作ったのです
Lv1時数値の0.08倍ずつLvUp毎に増えるので
Lv1からLv?の計算は簡単でした

(defun st計算 (ステ Lv) (decf Lv)
 (+ Lv ステ (* Lv 0.08 ステ))
)

しかしLv10とかLv20とかからLv?で躓きました
LvUp済み数値は切り捨てられているため
その数値から計算した数値は必ず求めたい数値以下になる
なのでceilingで切り上げたのですが
丁度の場合 (/ 312 2.6) に落とし穴が><

後、四捨五入も最初試しましたが
Lv3のカードとか低Lv時にまずい結果となりダメでした

もっとスマートなやり方あるのでしょうが
現在問題なく計算出来てるため良しとしています
日本語入ってたり段落が・・・初心者丸出しですが晒します TT

(defun st (ステ 現L L) (decf 現L) (decf L)
 (setq X (ceiling (- ステ 現L) (+ 1.001 (* 0.08 現L))))
  (+ L X (* 0.08 L X ))
)

ステ = 現在のステータス値
現L = 現在のLv値
L   = 求めたいLv値

822
デフォルトの名無しさん[sage]   投稿日:2014/05/23 09:47:31  ID:mYFiVGW2b(2)
>820
C言語でいう静的局所変数に相当する機能としてはクロージャがあります。
詳しくは http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp11.html の中頃を参照のこと。
あまり例として適切ではない気がしますが、クロージャを使ってmember*を実装しようとするとこうなります。

(let ((cnt 1))
(defun membe** (x lst)
(cond ((null lst)
(setq cnt 1)
0)
((eq (car lst) x)
(prog1 cnt
(setq cnt 1)))
(t (setq cnt (1+ cnt))
(member* x (cdr lst))))))
コメント1件

823
デフォルトの名無しさん[sage]   投稿日:2014/05/23 09:48:50  ID:mYFiVGW2b(2)
>822
タイポ訂正
(let ((cnt 1))
(defun member* (x lst)
(cond ((null lst)
(setq cnt 1)
0)
((eq (car lst) x)
(prog1 cnt
(setq cnt 1)))
(t (setq cnt (1+ cnt))
(member* x (cdr lst))))))

824
デフォルトの名無しさん[sage]   投稿日:2014/05/23 10:05:01  ID:fRyU8CgY.net(2)
>819
この例ではカウンタを引数渡しでいいと思う。
C言語でいう静的局所変数に相当する機能としてはクロージャがある。
http://www.geocities.jp/m_hiroi/xyzzy_lisp/abclisp11.html
クロージャを使ってmember*を実装しようとするとこうなる。

 (let ((cnt 1))
  (defun member* (x lst)
  (cond ((null lst)
  (setq cnt 1)
  0)
  ((eq (car lst) x)
  (prog1 cnt
  (setq cnt 1)))
  (t (setq cnt (1+ cnt))
  (member* x (cdr lst))))))
コメント1件

825
デフォルトの名無しさん[sage]   投稿日:2014/05/23 11:01:01  ID:VIeF9Nr2.net
(defun member* (x lst &hidden (c 1))
(cond
 ((null lst) 0)
 ((eq (car lst) x) c)
 (t (member* x (cdr lst) (1+ c)))))

(member* 3 '(1 2 3 4 5) 1) => ERROR
(member* 3 '(1 2 3 4 5)) => 3

みたいな砂糖が欲しい

826
デフォルトの名無しさん[sage]   投稿日:2014/05/23 11:14:23  ID:EZ1gF0i3.net
>824
どうも有り難うございます。書いてもらったSample睨みながら勉強してみます。

827
デフォルトの名無しさん[sage]   投稿日:2014/05/23 11:15:49  ID:SQmi/tAr.net
nthに合わせて0オリジンじゃないと気持ち悪いな。

828
デフォルトの名無しさん[sage]   投稿日:2014/05/23 11:24:51  ID:fRyU8CgY.net(2)
>820,824
Lisp的に書くなら関数内で局所関数を定義すると思う
(defun member* (x lst)
(labels ((iter (lst cnt)
(cond ((null lst) 0)
((eq (car lst) x) cnt)
(t (iter (cdr lst) (1+ cnt))))))
(iter lst 1)))

Schemeの名前付きletを移植するとか (Let over Lambdaより)

(defmacro nlet (n letargs &rest body)
`(labels ((,n ,(mapcar #'car letargs)
,@body))
(,n ,@(mapcar #'cadr letargs))))

(defun member* (x lst)
(nlet iter ((lst lst) (cnt 1))
(cond ((null lst) 0)
((eq (car lst) x) cnt)
(t (iter (cdr lst) (1+ cnt))))))
コメント1件

829
デフォルトの名無しさん[sage]   投稿日:2014/05/23 11:33:16  ID:C0KuPecL.net
>828
たびたびサンクスです
どうも有り難う

830
デフォルトの名無しさん[]   投稿日:2014/05/23 11:46:22  ID:/J+wV7gv.net
できるだけ無駄をはぶきたくてライブラリ解読して、書き換えて自前のライブラリつくっていってるんだが、usocketの内部をだれか解説してけろ。

831
デフォルトの名無しさん[sage]   投稿日:2014/05/23 12:54:38  ID:3Eda7qDb.net
usocket-0.6.1/backend/使ってる実装.lispを参考にしてください。
"U"niversal部分はいらないだろうから。
コメント2件

832
デフォルトの名無しさん[sage]   投稿日:2014/05/29 17:54:47  ID:iRVpIyX/k
ECLで、ハッシュテーブルをequalpでチェックしたら、キーのチェックしかしないみたいなんだけど...

(let ((ht1 (make-hash-table))
(ht2 (make-hash-table)))
(setf (gethash :foo ht1) 42)
(setf (gethash :foo ht2) "42")
(equalp ht1 ht2))
=> T ; <-- なんでやねん

(equalp 42 "42") => NIL

env. ECL-13.5.1 on Linux
c.f. http://www.lispworks.com/documentation/HyperSpec/Body/f_equalp.htm#equalp

833
デフォルトの名無しさん[sage]   投稿日:2014/06/02 15:38:30  ID:H3ihprqs.net(2)
>831
http://www.mat.uc.pt/~pedro/cientificos/funcional/lisp/gcl_23.html#SEC1349
リーダーマクロ関数からの呼び出しをもっぱら想定しているみたい。
コメント1件

834
デフォルトの名無しさん[sage]   投稿日:2014/06/02 17:26:57  ID:Q2JN1vdj.net
>833
英語苦手だしよくわからないよ
(set-macro-character #\@
(lambda (stream char)
(list 'quote (read stream))))

@(1 2 @(4 5 6))
としたら
(1 2 '(4 5 6))
となるし再帰的に処理されてるんだけどなあ
でも
@(#3=(1 2) @(#3#))
とかだと#3#が無いと怒られるしこれが再帰的に呼ばれないってことなのかな
コメント1件

835
831[sage]   投稿日:2014/06/02 22:02:17  ID:H3ihprqs.net(2)

836
デフォルトの名無しさん[sage]   投稿日:2014/06/02 22:20:10  ID:hdza40A5.net(2)
>835
ありがとう
結局処理系によって動作が微妙に違って有耶無耶になってるね

837
デフォルトの名無しさん[sage]   投稿日:2014/06/02 23:28:47  ID:Evci24oh.net
>831
内部で再帰的に呼び出すかどうかを呼び出し側で制御するための引数じゃないよ。

この呼び出しはトップレベルでの呼び出しではないう意味のフラグ。
内部処理でこのフラグを使う。
set-macro-character等で定義したコード内でも同様。
分かりにくい名前だけど。

preserving_whitespaceのケースが分かりやすい。

838
デフォルトの名無しさん[sage]   投稿日:2014/06/02 23:43:50  ID:hdza40A5.net(2)
ああずっと勘違いしてたのか
readに再起されてることを教えるためにrecursive-pをtにするのか
すっきりした

839
837[sage]   投稿日:2014/06/03 00:08:51  ID:cDJn8bWQ.net
read macroのようにシステムの振る舞いを変える特殊な機構がなければ、
こんなものはプログラマーに見せる必要はないのだ。

逆に言うと、CL使う時はプログラマがいつも言語屋に近いことをやらされるというか、
出来るということを想定してないと意味が分かりにくいものが結構ある。

だからCLの本はマニアックなものが多い。言語屋思考が前面に出てる。

840
デフォルトの名無しさん[]   投稿日:2014/06/03 00:30:35  ID:Mp2Ed1vv.net
インスタンスとletによる束縛の範囲が良くわからないのです。

(defclass foo ()
((a :accessor foo-a)))

(defvar *bar* (make-instance 'foo))

(let ((obj *bar*))
(setf (foo-a obj) 1))

(foo-a *bar*)
=> 1

このとき、obj は let の中で操作されてるのに、何で外側の実態まで変わっちゃうんでしょう??
いっぽうで、

(let ((a (foo-a *test*)))
(setf a 2)
a)
=>2

(foo-a *bar*)
=>1

このときはちゃんとlet内でのみ束縛されてるみたいです。

841
837[sage]   投稿日:2014/06/03 10:40:12  ID:uQjrLyNg.net
Common Lispに限らないかなり初歩的なことを理解できてないので、
プログラミング入門的な本から始めることをオススメします。
ヒープオブジェクト、バインディング、ポインター辺りのキーワードから。
(setf (foo-a obj) 1)はオブジェクトの破壊的変更ですが、
(setf a 2)はバインディングを変更しただけです。
コメント2件

842
はちみつ餃子 ◆8X2XSCHEME [sage]   投稿日:2014/06/03 15:10:40  ID:hEzMKve3.net
C++ で書いたらこんな感じかな。

#include <iostream>

class foo {
private:
int a;
public:
int& foo_a(void);
};

int& foo::foo_a(void) {
return a;
}

foo bar;

int main(void) {
foo& obj = bar;
obj.foo_a() = 1;
std::cout << bar.foo_a() << std::endl;

return 0;
}

843
デフォルトの名無しさん[sage]   投稿日:2014/06/04 13:22:11  ID:smqAeE2Q.net
>841
便乗でききたいんだけど、

(let ((a b)) ...)

ってした時に、a に束縛されるものが、bそのものなのか、bの参照先なのか、ってどうやって判断するんですか?
コメント1件

844
デフォルトの名無しさん[sage]   投稿日:2014/06/04 13:38:11  ID:HmwUcklb.net
letの仕様で判断するしかないだろ
letの場合、aに束縛されるのは、bを評価した結果だよ

845
デフォルトの名無しさん[sage]   投稿日:2014/06/04 18:07:09  ID:rdwm0BrH.net
>843
bそのもの
という場合は、シンボルbの意味になるな
値と参照先の対比で言えば
シンボルbが値として有ることはない。あくまでシンボルbは或る値へのポインタを保持する
代入と言わずに束縛という理由の一つでもある
コメント1件

846
デフォルトの名無しさん[sage]   投稿日:2014/06/05 10:31:29  ID:MplfPKH6.net(2)
>845
バインディングの場合は、シンボルが値を保持してるわけじゃない。
環境上でバインディングされてるだけだ。
コメント1件

847
デフォルトの名無しさん[sage]   投稿日:2014/06/05 10:34:36  ID:2vI6486P.net
>846
そうどけどそう読めない文だったかな

848
デフォルトの名無しさん[sage]   投稿日:2014/06/05 16:40:47  ID:eDcskf88.net
>841の説明がよくない。
ここは破壊的かどうかよりも、let が何を束縛するかが重要だろ。

849
デフォルトの名無しさん[sage]   投稿日:2014/06/05 16:55:00  ID:MplfPKH6.net(2)
letでaに何が束縛されていようが、
変数aにsetfしたらaの束縛の変更にすぎないのは同じ。
それより問題なのは「*test*」

850
デフォルトの名無しさん[sage]   投稿日:2014/06/07 20:52:17  ID:dP/42broZ
sbcl-1.2.0で、以下のようにloopに型宣言を入れるとタイプエラーが発生してしまいます。
loopをマクロ展開してみると、終了条件が "i<=0"ではなく "i<0"となっています。
これはloopの仕様なのか、それともsbclの不具合なのか、よくわかりません。
詳しい方、コメントをいただければありがたいです。

(loop :for i :of-type (integer 0 *) :from 10 :downto 0 :collect i) => TYPE-ERROR
(loop :for i :of-type (integer 0 *) :downfrom 10 :downto 0 :collect i) => TYPE-ERROR
(loop :for i :of-type (integer 0 *) :downfrom 10 :to 0 :collect i) => TYPE-ERROR

851
デフォルトの名無しさん[sage]   投稿日:2014/06/12 17:24:56  ID:f/jOndoO9
850です、sbclのバグレポートを見ていたところ解決しましたので、ご報告まで。

CLHS, 6.1.2.1.1 The for-as-arithmetic subclause, downto, uptoの部分を読んでみると、

> the loop terminates when the variable var passes the value of form2.

とあり、ループ変数が終了の値を超えた[pass]ときループは終了するそうです。
したがって、ループ変数は終了の値の値よりも小さくなるようです。

参考:https://bugs.launchpad.net/sbcl/+bug/1278803
   http://www.lispworks.com/documentation/HyperSpec/Body/06_abaa.htm

852
デフォルトの名無しさん[sage]   投稿日:2014/06/15 13:05:35  ID:b/Fd0dwY.net
質問です
cygwinにClozure Common Lispを入れています
ターミナルからClozure Common Lispを動かして
drakmaをquickloadで入れようとしたらエラーになりました

? (ql:quickload :drakma)
To load "drakma":
Load 1 ASDF system:
drakma
; Loading "drakma"
> Error: Unable to load foreign library (LIBSSL).
> Error opening shared library libssl32.dll : 指定されたモジュールが見つかりません。 .
> While executing: CFFI::FL-ERROR, in process listener(1).

which libssl32.dll や which openssl
でパスが帰ってくるのでそれらへのパスは通っているようです
どうすれば解決しますか?
コメント1件

853
デフォルトの名無しさん[sage]   投稿日:2014/06/15 13:46:45  ID:yc4x9J1B.net
DLLのロード、cygwinのパス使って解決はしないのでは。

854
デフォルトの名無しさん[sage]   投稿日:2014/06/16 00:09:49  ID:mOjr4QnD.net
ありがとうございます
cffiの仕組みがよく分からないので調べてみます

855
デフォルトの名無しさん[sage]   投稿日:2014/06/16 00:50:05  ID:E9WcDStG.net
>852
cffi というより cygwin の話。
cygwin 経由でファイル操作しようとした場合、 cygwin のランタイムライブラリは cygwin 上のパスから windows のパスへの変換をかけて処理する。
cygwin 用にビルドされていないアプリケーションは cygwin 上で動かしても cygwin のランタイムを経由しないので、 cygwin 上の設定を必ずしも反映しない。
Clozure にはロードパスを明示して指定するオプションがあるはずなので、それでライブラリの場所を直接に指定するといいと思うよ。

856
デフォルトの名無しさん[sage]   投稿日:2014/06/21 04:07:00  ID:3WmZPTyQ.net
http://www.siginf.com/601.html
科学技術計算用のライブラリとしてものすごくよさそうだけど
ダウンロードの項目とかないしまだ開発中なのかな

857
デフォルトの名無しさん[]   投稿日:2014/06/23 22:01:30  ID:/DPPu1fU.net
どなたか教えて下さい。
または、ヒントになるウェブ上の文章など
ご存知なら記入していただきたい。

lispは、関数がファーストクラスオブジェクトである。
だから、あーしたりこーしたりできる。

なにをもってファーストクラスオブジェクト
とする条件が整うのですか?
またそうでない場合は何と呼ばれるのですか?
セカンドクラスは存在しますか?
そもそもファーストクラスオブジェクトという存在の
起源はいつ、どこで、だれが発端なのですか?

858
デフォルトの名無しさん[sage]   投稿日:2014/06/23 23:23:47  ID:sN8Q1H3I.net
他のデータと同じように変数に束縛できたり、
印刷できたり、ネットワークで送ったり出来れば、
ファーストクラスオブジェクト。
他のデータとくらべて、なにか大きな制限があれば
ファーストクラスオブジェクトではない。

「大きな」制限がないという意味は、例えば同じオブジェクトを二回送信して二回受信して、
eqにはならないがequalくらいにはなるというような類いのこと。
数字の1ならeqになるけど、リストならeqじゃなくてもいいかみたいな話。

そうでないものをセカンドクラスと呼びたければ呼んでもいい。
単なる英語で特別な意味は無い。

起源はたぶんLispだろう。他にこの手のことが話題になる言語は長い間なかったので。

859
デフォルトの名無しさん[]   投稿日:2014/06/24 15:16:59  ID:5xWJp1EJ.net
854さん、ありがとうございます。
データと同じ様に扱えればファーストクラスとのこと。
lispのプログラムとは究極的には
1, 関数の定義
2, 関数の実行(データを与えられて)
なので、すごく自由なんですね。

860
デフォルトの名無しさん[sage]   投稿日:2014/06/24 15:28:20  ID:JJ61LHPx.net
関数をネットワークで送るってどういうことなの
S式を送って受け手で評価するってこと?

861
デフォルトの名無しさん[sage]   投稿日:2014/06/25 10:16:59  ID:99OqZGTi.net
他のデータと同じように扱えればというのは同意だけど、印刷できたりネットワークで送ったりはなんか違くね
あくまでプログラミング言語の表現上でできることによる分類だと理解してるんだけど
まあ厳密な定義がない言葉だから人によって違うのかもしれんが

862
デフォルトの名無しさん[sage]   投稿日:2014/06/25 11:12:08  ID:Fqus7fR8.net
印刷?よくわからん
ネットで贈るって環境込みでクロージャー送らないの意味なくね?
よくわからん

863
デフォルトの名無しさん[sage]   投稿日:2014/06/25 13:21:27  ID:WPn8ToeQ.net
http://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E3%82%AA%E3%...
http://ja.wikipedia.org/wiki/%E7%AC%AC%E4%B8%80%E7%B4%9A%E9%96%A2%E6%...

ファーストクラス (第一級) とかの区分は、ALGOL な人の、ALGOL の関数はそうではない、という説明で初出するらし。
http://en.wikipedia.org/wiki/First-class_citizen#History

864
デフォルトの名無しさん[sage]   投稿日:2014/06/25 21:00:35  ID:APzd6ej5.net
ALGOLか。
表示的意味論のStracheyさんだな。

865
853[]   投稿日:2014/06/25 22:06:41  ID:bfUMIbrs.net
ファーストクラスについて質問した853です。
854さんへ返事をした855も私です。
859を見て驚きました。
まさかウィキペディアに項目があるとは「灯台下暗し」でした。
3つ目のリンク(英語のウィキペディア)を、たどれそうですね。
特にそのリンク先の項目
Historyの、First and second class objects.からはじまる10行分の引用元は
おそらく以下の論文32ページの下の方、
Fundamental Concepts in Programming Languages
https://www.itu.dk/courses/BPRD/E2009/fundamental-1967.pdf
に存在していて疑問のキモに近づけている気がします。

そもそも10行分の引用の後ろにある... [4] この索引4番。
上の論文を含む論文集の様なコレ(ググると出てきました)。
Higher-Order and Symbolic Computation
https://cs.au.dk/~hosc/vol13/contents.html
これは、何なのでしょうね?
サブタイトルに
Volume 13, Issue 1/2 (April 2000) Special Issue in memory of Christopher Strachey
とあり、860さんも指摘するこの名前が、インメモリーオブの後にある。
とりあえずは、皆様のおかげです。ありがとうございました。
2ちゃんてスゴイ。

866
デフォルトの名無しさん[sage]   投稿日:2014/06/28 10:41:12  ID:KURc4R4I.net(2)
ILC応募はじまってるぞ。
コメント1件

867
デフォルトの名無しさん[sage]   投稿日:2014/06/28 14:25:31  ID:3k/D2XmS.net
そうか

868
デフォルトの名無しさん[sage]   投稿日:2014/06/28 19:12:53  ID:KURc4R4I.net(2)
おいおい、興奮しねぇのかよ
いくしかねぇだろうが

869
デフォルトの名無しさん[sage]   投稿日:2014/06/28 19:24:15  ID:6G7Aa+Xt.net
            |i
     \      |.|
      ト\   /| ト
      | トヽ   / | | ト
      | | トヽ\/| | | ト    /
      | | | ト\≧三ミゞ=イ/
     ム彡''´ ̄ ̄    ̄ ヽ{__..
    /             V´
    ノ  __          ',
 ,. == y ̄, __、\_        )      世 界 的 で す も ん ね
 |i  }-| ゝ二 |/ ̄ ̄  /ニ,l
 ヽ__ノ/ヾ _ ノ       > }}
  / >≦'__        し /        乗 る し か な い
   Vて二オカ       (_,/}
   Yこ二ノ!!|          }         こ の ビッ グ ウ ェ ー ブ に
    Y⌒ 从        ∠)
    从从从トミ   _.ィニ二 ̄丶
     ミ三三彡 ' ´      \ \
        /           \ヽ
      /            ミ;,. ', ',
       |   _  _ __    \',.',
      ノ!   | V7\ ´/
     / l /_ゝ| ト >__/ /
     |   ヽン ´  ヽー'
    i|                l
    |:! ヽ              |
    | ト、 `ミ,            l

870
デフォルトの名無しさん[sage]   投稿日:2014/06/28 23:41:57  ID:WOd9pXsx.net
>866
ILCってなに?ググっても分からんかった
コメント1件

871
デフォルトの名無しさん[sage]   投稿日:2014/06/29 00:29:18  ID:GtYVa+TG.net
International Lisp Coference
コメント1件

872
デフォルトの名無しさん[sage]   投稿日:2014/06/29 11:37:18  ID:gwVdKsQj.net(2)
>870
"ILC Lisp" でググれば直ぐに出てくるんだが
情報リテラシー能力が欠如しているのかw
コメント2件

873
デフォルトの名無しさん[sage]   投稿日:2014/06/29 13:50:05  ID:kMofjRV8.net
>872
後出しはぶざま。
コメント2件

874
デフォルトの名無しさん[sage]   投稿日:2014/06/29 18:31:52  ID:jxL17uOJ.net(2)
ググればすぐ出てくるものに、その反応こそゴミだな。

875
デフォルトの名無しさん[sage]   投稿日:2014/06/29 18:37:51  ID:rSPW55Gi.net
>873
後出しとかw

876
デフォルトの名無しさん[sage]   投稿日:2014/06/29 19:39:51  ID:gwVdKsQj.net(2)
>873
ILCだけで絞れなかったら次に思いつくのはLispだろ?
ここは何のスレだと思ってるんだよwww

877
デフォルトの名無しさん[sage]   投稿日:2014/06/29 21:51:23  ID:vXcDBpcb.net
ますますぶざま。

878
デフォルトの名無しさん[sage]   投稿日:2014/06/29 22:25:15  ID:jxL17uOJ.net(2)
必死だな。

879
デフォルトの名無しさん[sage]   投稿日:2014/06/29 23:42:13  ID:3G00hY9C.net
>871
>872 
ありがとう
確かに情報リテラシー能力は足りてないと思う
人の検索キーワード見てると勉強になってる

880
デフォルトの名無しさん[sage]   投稿日:2014/06/30 07:38:38  ID:YSr0d58i.net
情報リテラシーってのはどうでもよくてだな、ILCにみんないこうぜってはなしなんだよ。

881
デフォルトの名無しさん[sage]   投稿日:2014/06/30 07:52:00  ID:f7mL4vcK.net
初学者の俺にはきっと時期尚早
エキスパートたちは楽しんできてくれ
「驚異のエロトーク、君の彼女を越える?!人工彼女三号アケミチャン、今、Lispの可能性がここに具現する!!」
とか発表されるのかなあ

882
デフォルトの名無しさん[sage]   投稿日:2014/06/30 08:33:15  ID:S7PnoB7N.net
初学者だからどうとかではなく、参加して信仰心を示すことが大切なのだよ、君。

883
デフォルトの名無しさん[sage]   投稿日:2014/06/30 13:51:44  ID:7FoUPvVO.net
あらら、そりゃくずだわ
信仰心!
あ、くず
そりゃ、くず
まじ、くず
くずの3乗!

884
デフォルトの名無しさん[sage]   投稿日:2014/06/30 21:55:50  ID:aNL5GHv4.net(2)
Faith Bookですね

885
デフォルトの名無しさん[sage]   投稿日:2014/06/30 22:30:33  ID:WSGOXIMG.net
このスレ、ヘンなのが居ついちゃってからどうもダメだね。

886
デフォルトの名無しさん[sage]   投稿日:2014/06/30 22:40:49  ID:r0HKSexR.net(2)
ILC 2014 ってカナダ モントリオール現地集合やんけw
コメント1件

887
デフォルトの名無しさん[sage]   投稿日:2014/06/30 22:42:26  ID:r0HKSexR.net(2)
そういや、小俣さんからカリフォルニア現地集合のセミナー案内が来たことあったな
そんなんをさらっと日本語メールで送ってくるなって思った

888
デフォルトの名無しさん[sage]   投稿日:2014/06/30 23:09:54  ID:aNL5GHv4.net(2)
>886
モントリオールだとフランス語わからんと生活ままならん
英語だけだとちょっといぢめ入るんだよあそこ。

非常口とか全部フランス語

889
デフォルトの名無しさん[sage]   投稿日:2014/07/02 02:56:41  ID:lG4D7CHT.net
フランスがフランス語を守るのは国策ですので。
http://ja.wikipedia.org/wiki/%E3%83%95%E3%83%A9%E3%83%B3%E3%82%B9%E3%...

890
デフォルトの名無しさん[sage]   投稿日:2014/07/03 01:21:37  ID:/42+xN9z.net
linuxでlispつかってるプログラマーの環境が知りたいです。
エディタなのかそれともlimpやlispboxみたいなIDEなのかとか
それと文字入力の組合せはiBus+Anthyよりuim + Anthyの方がいいのでしょうか?
iBus+Anthyでvim使おうと思うとキーボードで日本語入力への切替が出来ず、とても面倒だったので皆さんどうしてるのでしょうか?
コメント1件

891
デフォルトの名無しさん[sage]   投稿日:2014/07/03 06:44:45  ID:9NgNqjgv.net
vimmerでつ。

892
デフォルトの名無しさん[sage]   投稿日:2014/07/03 10:43:30  ID:m1ee/I8B.net
emacs 最強。
日本語入力は ddskk

893
デフォルトの名無しさん[sage]   投稿日:2014/07/03 11:04:55  ID:dl+rXweg.net(2)
>890
emacsでし、日本語はATOKXなんだけど最近の環境に移行するのにはATOKマンドクサイ

894
デフォルトの名無しさん[sage]   投稿日:2014/07/03 11:28:14  ID:CYaxL587.net
emacsとmozc

895
デフォルトの名無しさん[=sage]   投稿日:2014/07/03 15:19:42  ID:zQnvFAz4.net
ん?、emacsってローカル変数つかえないと聞いたなあ
コメント1件

896
デフォルトの名無しさん[sage]   投稿日:2014/07/03 15:35:47  ID:dl+rXweg.net(2)
正確にはemacs+sbcl+slimeって書けばOK?
コメント1件

897
886[sage]   投稿日:2014/07/04 05:55:47  ID:a+Sm66UT.net
>896
lispboxを使わずにemacsでプログラミングしてるってことですか?

windowsではlispboxインストールしたけど、linuxもとりあえずemacsでやったほうがいいのかな

898
デフォルトの名無しさん[sage]   投稿日:2014/07/05 06:39:46  ID:uz94kqwx.net
lispboxてemacs+slimeじゃなかったけ?
俺はemacs+slime+auto-complete+ac-slime+paredit+popwin

899
デフォルトの名無しさん[sage]   投稿日:2014/07/06 17:40:45  ID:pTttFthd.net(2)
clojureのthreading macroおもすろーと思ってCLで書いてみたんだけど、
書き終わってみてなんか実際の使いどころが思いつかなくて休日を無駄にした気分です
日記
コメント1件

900
デフォルトの名無しさん[sage]   投稿日:2014/07/06 18:06:04  ID:aspDWAp6.net
>899
副作用許容するCLだと使いどころあんまないでしょ。
Loopマクロ完全理解とかの方がよっぽどお得、というかあれ完全に使いこなす人見てるといつも羨望のまなざししちゃう。
コメント1件

901
デフォルトの名無しさん[sage]   投稿日:2014/07/06 20:36:26  ID:pTttFthd.net(2)
>900
そうですね、やっぱりloopで自然に書けるところはそれで書いちゃうので
あと関数的でも名前長いとなんかいまいち読みやすくなった感がなかったように感じました
単純な関数の組み合わせは結構すっきり書けるようになったんでまあ無駄ではなかったと思いたいです
(-> last-page (+ i) (- 1))
(->> url (ppcre:split "/") #'last #'car (ppcre:split "\\.") #'cadr)

902
デフォルトの名無しさん[sage]   投稿日:2014/07/07 09:48:07  ID:6na4sCwW.net
>895
emacs24からスコープの扱いが変わったんじゃなかったっけ?

903
デフォルトの名無しさん[sage]   投稿日:2014/07/07 12:36:51  ID:KxgY/iod.net
letがあるから昔からローカル変数はある。
スコープがレキシカルな変数、レキシカル変数のことでしょうかね?

904
デフォルトの名無しさん[sage]   投稿日:2014/07/07 14:10:16  ID:eRMueaNX.net
emacs24からemacs lispでレキシカルスコープが使えるようになった
従来の動的スコープから変更になったわけじゃなくて、デフォルトは動的で、
何らかの指定をするとレキシカルスコープになる
動的スコープの関数からレキシカルスコープの関数を呼ぶこともできるし、逆も可能

ただしこのスレで今話題になってるのは、emacsでlisp使うと言っても、
emacs lispを使うわけじゃなくて外部のlispをemacs上で使う話でしょ?

905
デフォルトの名無しさん[sage]   投稿日:2014/07/07 16:09:01  ID:dUgWwPpk.net
emacs lispの静的スコープは設定で切り変えるんじゃなくて
昔のlispマシンみたいにclosure構文にしたほうがよかったと思う

906
デフォルトの名無しさん[sage]   投稿日:2014/07/09 01:21:29  ID:/8/fqD8z.net
そうか。

907
デフォルトの名無しさん[sage]   投稿日:2014/07/10 13:47:07  ID:HShQwxB+.net
この地味に

そうか。

ってのむかつくんだけど
なにがむかつくってスレ開いて新着レスキタ - .∵・(゚∀゚)・∵. - ッ!!とかおもったら

そうか。

だよ
結構イライラするからやめてくれ

でまた

そうか。

だろ?やめろ
コメント2件

908
デフォルトの名無しさん[]   投稿日:2014/07/10 14:54:39  ID:np89A9e3.net
それ面白い都でも思った?
そうか。ってレスつくの期待してんの?

909
デフォルトの名無しさん[sage]   投稿日:2014/07/10 18:53:26  ID:b8uVYlJ5.net
>907これ 前からある書き込みのコピペだよ

910
デフォルトの名無しさん[sage]   投稿日:2014/07/11 11:00:59  ID:tKSWivTs.net
>907
創価

911
デフォルトの名無しさん[sage]   投稿日:2014/07/11 11:11:41  ID:VpP/Y762.net
煎餅

912
デフォルトの名無しさん[sage]   投稿日:2014/07/11 14:25:42  ID:9W9RigEI.net
布団

913
デフォルトの名無しさん[sage]   投稿日:2014/07/13 23:35:05  ID:Nc6h/Xfp.net
はじめまして。質問させて下さい。


1 yyyy-mm-dd
...
n yyyy-mm-dd


というテキストから、各行を名前に持つディレクトリをn個
生成するのはどうしたらできますか?


iphoneで撮影してdropboxのcamera uploadsに溜まっている
写真を整理しようと思い、


ls -h
cut -c-11
uniq


を調べながら使って冒頭のテキストを作るところまでできたところです。
誘導や「それならそもそもこういうやり方をすればもっと上手い」とかでも構いません。
よろしくおねがいします。


ubuntu 11.20です。

914
909[sage]   投稿日:2014/07/13 23:46:36  ID:YbxcgjxG.net
すいません追加です。できたディレクトリに、各日に撮影されたデータを
移動するうまいやり方ってありますか?
ファイル名の頭がyyyy-mm-ddとなっているのと、exif情報があります。
当方プログラミングはほとんどわかりませんが、以上よろしくおねがいします。

915
デフォルトの名無しさん[sage]   投稿日:2014/07/14 00:02:20  ID:AQ9cUEpT.net
スレ違い。こっち↓で聞いてみたら?
シェルスクリプト総合 その23 /UNIX板

916
909[sage]   投稿日:2014/07/14 00:42:44  ID:QYx8kOpF.net
誘導ありがとうございました。こちらでの質問は取り下げさせて頂きます。

917
デフォルトの名無しさん[sage]   投稿日:2014/07/15 06:15:03  ID:59xep59Q.net
なぜここにきた。

918
デフォルトの名無しさん[sage]   投稿日:2014/07/16 10:51:34  ID:zYYJ84NZ.net
lsとlispで関係あると思ったとか?

919
デフォルトの名無しさん[sage]   投稿日:2014/07/16 12:28:38  ID:AJ7uNsXY.net
slとsbclで関係あるのかと思ったのでは?

920
デフォルトの名無しさん[sage]   投稿日:2014/07/16 13:21:29  ID:Y98WTq58.net
ファイルとかディレクトリ操作でわざわざCLを使う気にもならない。
cl-fadとかを使って頑張るよりもシェルスクリプトを書いたほうが早いと気づいた。

こうして僕はまた一つ、大人になった

921
デフォルトの名無しさん[sage]   投稿日:2014/07/16 20:49:53  ID:4BExK8tU.net(4)
CLはその辺面倒くさいよね
パスネーム作るのもめんどくさいしファイルディレクトリ操作関連の関数名前長いし

922
デフォルトの名無しさん[sage]   投稿日:2014/07/16 21:02:18  ID:3aowtiLr.net(2)
関数名は長くてもコピペで終わりでしょ
マウス使えない人?

923
デフォルトの名無しさん[sage]   投稿日:2014/07/16 21:17:26  ID:4BExK8tU.net(4)
なんでそこでマウスがでてくるの? そこは自動補完使うだろ普通に
単に名前長いとコードが横に長くなるし見た目がごちゃごちゃして嫌いなんだよ
まあ何をする関数なのかがわかりやすいのは利点だけど

924
デフォルトの名無しさん[sage]   投稿日:2014/07/16 21:23:10  ID:3aowtiLr.net(2)
貧弱な表示器つかってるか
横に長いと読めないと言いたいだけ?

925
デフォルトの名無しさん[sage]   投稿日:2014/07/16 21:40:20  ID:4BExK8tU.net(4)
虫の居所が悪いなら酒でも飲んでさっさと寝なさいな
おやすみ

926
デフォルトの名無しさん[sage]   投稿日:2014/07/16 21:45:24  ID:2gGxGOPY.net
ファイルやディレクトリ操作はcommon lispに限らず
pythonとかでもシェルスクリプトより冗長になるけど

927
デフォルトの名無しさん[sage]   投稿日:2014/07/16 22:13:02  ID:4BExK8tU.net(4)
pythonやperlなんかはCLよりもう少し楽な印象があるけどなぁ
厳密に比較したわけじゃないけど
不満があるなら自分でなんとかしろってのがLispなので少し考えてみるか

928
デフォルトの名無しさん[sage]   投稿日:2014/07/17 03:31:45  ID:9RVv4Ujx.net
外部コマンドの呼び出しも処理系依存だしexternal-programとかを使って違いを吸収してやる必要があるしな。

929
デフォルトの名無しさん[sage]   投稿日:2014/07/17 14:29:12  ID:zA0F2tu6.net
最近逆引commonlispが見れなくなって不便
ただでさえ情報が少ないんだから何とかしてよう
コメント1件

930
デフォルトの名無しさん[sage]   投稿日:2014/07/18 01:09:52  ID:vTAgXcei.net
>929
ぐぐったら普通に出てきたぞ

931
デフォルトの名無しさん[sage]   投稿日:2014/07/18 01:26:15  ID:FVnspc/u.net
URL変わってた

932
デフォルトの名無しさん[sage]   投稿日:2014/07/18 21:55:16  ID:BDBW/1YI.net
cl-ncursesで作ったプログラムがエラーを出したときのデバッグってどうすればいいの?
slimeの上で動かすのは無理だから端末で動かしてるけどエラーが出たら表示が乱れるし
間違ってる箇所の特定が困難
コメント2件

933
デフォルトの名無しさん[sage]   投稿日:2014/07/19 09:22:14  ID:GqScUVmy3
>> 928
asdf3に含まれているuiop:run-programはべんりだよ。
それからcl-launchを使えばポータブルなCLシェルスクリプトが簡単に生成できるよ。

934
デフォルトの名無しさん[sage]   投稿日:2014/07/19 11:16:55  ID:0HpoPve0.net
>932
端末でやってるなら、stferrをファイルにリダイレクトとかで出来ないかな?
もしくは、teeとか使ったらどうだろう

935
デフォルトの名無しさん[sage]   投稿日:2014/07/19 13:47:07  ID:Cah7tT4p.net
ファイルに書き出すのが無難なのかなやっぱり
これで少し楽になりそう

936
デフォルトの名無しさん[sage]   投稿日:2014/07/20 16:36:48  ID:c+tbRQVc.net
>932

Unix 系の OS だと

1) slime/emacs 以外の端末を一枚開く
2) 上記端末で, tty コマンドを使って tty デバイスを調べる
3) 端末の shell 上で, sleep 86400 とかの長時間寝るコマンドを発行[1]
4) slime 側で "/dev/pty/<N>"(上で調べた tty デバイス) をオープンして
*standard-input* と *standard-output* を切り替えて実行

てな, ことをやっても slime からデバッグできないかな?
試したわけじゃないけど...

[1] 通常 shell は read で寝てるので, 端末からの入力を shell に食われる
shell が read で寝ないようにするために sleep 実行しておく

937
デフォルトの名無しさん[sage]   投稿日:2014/07/21 03:54:58  ID:BUK6QChG.net
デバッグ対象のプログラムでソケット開いてswankサーバを走らせ、slimeから接続してデバッグ

938
デフォルトの名無しさん[sage]   投稿日:2014/07/21 13:13:57  ID:1PP1q7+H.net
(defmacro iglambda (lambda-list &body body)
(let ((args (remove-if
(lambda (arg) (member arg lambda-list-keywords))
(mapcar (lambda (arg) (if (consp arg) (car arg) arg)) lambda-list))))
`(lambda ,lambda-list (declare (ignorable ,@args)) ,@body)))

こんなのを書いたんですが、lambdaみたく#'(iglambda (x) x)でエラーにならないようにする方法ってありますか
普段は#'つけなければいいだけなんですが、他のマクロで#'(iglambda (x) x)みたいに展開されちゃうとエラーになっちゃうので

939
デフォルトの名無しさん[sage]   投稿日:2014/07/24 22:33:25  ID:YIQWfIP0.net
一時的に*readtable*を書き換えるとか、#'をオーバーライドするとか

940
デフォルトの名無しさん[sage]   投稿日:2014/07/29 21:07:54  ID:lnaxbNJ+.net(2)
clispのed関数でviではなく別のエディタを使いたいんですがどうすればいいですか
コメント1件

941
デフォルトの名無しさん[sage]   投稿日:2014/07/29 22:17:13  ID:HvnnWmTY.net
clispの実装詳細は知らないけどunixの流儀として一般的には環境変数のEDITORをみる
たぶんlispレベルでも相当するスペシャル変数があるんじゃないか

942
デフォルトの名無しさん[sage]   投稿日:2014/07/29 23:00:40  ID:FSsnLBrE.net
>940
http://sourceforge.net/p/clisp/clisp/ci/default/tree/src/edit.lisp
ソース見るとわかるけど
(defparameter *editor* "your-editor")
これで行けるんじゃね?
コメント1件

943
デフォルトの名無しさん[sage]   投稿日:2014/07/29 23:31:36  ID:lnaxbNJ+.net(2)
>942
おお!
さっきダウンロードしてソース検索したのに見つからなかったから諦めてました
まさか.lispに書いてあったとは

944
デフォルトの名無しさん[sage]   投稿日:2014/07/30 03:14:08  ID:ymOvaeuA.net
おおお!
ドイツ語だあ、嬉しいなあ
Liefert den Namen des Editors
かっこええなあ
わかりやすいなあ
しね英語!やで

945
デフォルトの名無しさん[sage]   投稿日:2014/07/30 18:22:47  ID:g1c+taJs.net
gekommen lisp

946
デフォルトの名無しさん[sage]   投稿日:2014/07/30 18:34:08  ID:fUMWxb+n.net
Zu lehren das Lisp ist zu lieben sich.

947
デフォルトの名無しさん[sage]   投稿日:2014/07/31 22:09:56  ID:2NEmh/Ub.net
LISPプログラマーは、キーボードは日本語とUSどっち使ってる人が多いんだろう?
プログラマの人ってUS配列使ってる人多いよね?

948
デフォルトの名無しさん[sage]   投稿日:2014/07/31 22:27:02  ID:e1kodKvW.net
無変換と変換キーをctrlにしないと小指がしぬ
コメント1件

949
デフォルトの名無しさん[sage]   投稿日:2014/08/01 02:08:14  ID:ARdX3qTq.net
>948
無変換はHyper,変換はSuperに当てるのが普通んでもってaの左横はCtrl
親指の自由度って凄いからCtrlを変換キーに当てるのは妥当なんだけどやっぱりalt以外にsuper,hyperは欲しい
漢字変換?んなものはTCODEに限る

950
デフォルトの名無しさん[sage]   投稿日:2014/08/01 05:31:22  ID:XLYd3eQb.net
US配列とSKK。最高。

951
デフォルトの名無しさん[sage]   投稿日:2014/08/07 11:28:13  ID:HQ4TEMVi.net
LLVMベースでCommon Lispが動くやつってありますか?

952
デフォルトの名無しさん[sage]   投稿日:2014/08/07 20:11:39  ID:E8mbsF1h.net
cclを使っています
ターミナルでスクリプトを実行し
入力している文字を表示させない状況で入力させて
その値を取得したいのですが可能でしょうか?

標準入力からは*standard-input*を使えば値を取れることは分かりました
シェルのreadコマンドの、read -s PASSのような機能を想定しています

953
デフォルトの名無しさん[sage]   投稿日:2014/08/08 13:46:48  ID:qccrcm1U.net
947です
read -sを使ってキー入力を受け取り
lispスクリプトに引数として文字列を渡せば良いことに気づきました
失礼しました

954
デフォルトの名無しさん[]   投稿日:2014/08/08 14:08:50  ID:LVetnHZi.net
わかればよろしい

955
デフォルトの名無しさん[sage]   投稿日:2014/08/20 10:47:40  ID:5yBlZ/IM.net(2)
情報科学専攻だけど恥ずかしながらLispに触れたことがない
学生のうちにLisper名乗ってみたいから使ってみる
モチベ向上のためにアカデミック以外の現場でLisp使う、便利なのか先輩方教えて下さい
コメント1件

956
デフォルトの名無しさん[sage]   投稿日:2014/08/20 10:53:31  ID:8CcAuI4d.net
そんなこと言ってる奴は勉強しても無駄。
コメント1件

957
デフォルトの名無しさん[sage]   投稿日:2014/08/20 11:25:51  ID:d2pZ5gy3.net
>955
Lisperはなろうとしてなるものではないのだ、なっちまうのだよ
コメント1件

958
デフォルトの名無しさん[]   投稿日:2014/08/20 11:27:18  ID:5yBlZ/IM.net(2)
>956
そうすか 覚える必要はないからいいけど(´・ω・`)
ただ数式処理なんかでMathematicaやMaximaみたいな関数型言語に密接な環境には常日頃お世話になってるんで本格的に特性を理解したいんだよね

959
デフォルトの名無しさん[]   投稿日:2014/08/20 11:34:36  ID:Ar4bcC3q.net
どっちも偽関数型だ。


LISP - Wikipedia
関数型言語に分類されるが、ほとんどのLISP方言は、変数への束縛だけでなく、代入やデータ構造の破壊的操作も可能という、手続き型言語の性格ももっている。


Mathematica - Wikipedia
プログラミング言語としての Mathematica は、項書き換えを基本として関数型と手続き型の両方をサポートするマルチパラダイム・プログラミング言語である。
Mathematica は、ウルフラムらが1979年頃に開発した Symbolic Manipulation Program を起源とし[5]、プログラミング言語 ALGOL・LISP・ APL、および、数式処理システム Macsyma の影響を受けている[6][7]。

960
デフォルトの名無しさん[sage]   投稿日:2014/08/20 23:59:45  ID:7ZTzP0p/.net
>957
ワラタw
確かに自分もそうだ

961
デフォルトの名無しさん[sage]   投稿日:2014/08/28 21:56:13  ID:+EU13Tgr.net
リスパーになりたいのに
リスパーって言われたいのに
ぜんぜんなれない俺
コメント1件

962
デフォルトの名無しさん[sage]   投稿日:2014/08/28 22:30:25  ID:Nk/Y1yrf.net
あんたがlispを必要としていないか
あんたが必要とされてないか、どっちかだろう
コメント1件

963
デフォルトの名無しさん[sage]   投稿日:2014/08/28 22:56:00  ID:Gw1dAD8r.net
>961
マトリックスのモーフィアスが言ってただろう、感じろ!
コメント1件

964
デフォルトの名無しさん[sage]   投稿日:2014/08/29 08:10:40  ID:IguOVOzJ.net(2)
>962
バカにレスされたくない

965
デフォルトの名無しさん[sage]   投稿日:2014/08/29 08:11:23  ID:IguOVOzJ.net(2)
>963
はぁい

966
デフォルトの名無しさん[sage]   投稿日:2014/09/04 23:27:36  ID:IshzZhlV.net(2)
以前マクロの中で例外が使えれば今のマクロの弱点を克服できるみたいなページ読んだんだけど誰か分からないかな?

外側のマクロに対して内側のマクロから例外を出して書き換えるやつなんだけど

(iterator (x '(1 2 3 4))
(collecting acc x))
みたいなマクロからcollectingのところで例外を出して
iteratorで例外を補足してから
(iterator (x '(1 2 3 4))
(let ((acc nil))
(collecting acc x)))
みたいにコードを変えて例外処理のリスタートでcollectingの処理に戻るみたいなやつ。
コメント1件

967
デフォルトの名無しさん[sage]   投稿日:2014/09/04 23:47:41  ID:IshzZhlV.net(2)

968
デフォルトの名無しさん[sage]   投稿日:2014/09/05 00:27:28  ID:xOBKBssI.net
shiroさんも似たようなこと言ってた
http://blog.practical-scheme.net/shiro?20121227b-lisp-hare-tortoise

969
デフォルトの名無しさん[sage]   投稿日:2014/09/08 10:14:08  ID:VPTlsC/M.net
同じこと言ってるようには思えないんだけど、どこを同じと思ったので?

970
デフォルトの名無しさん[sage]   投稿日:2014/09/09 12:08:12  ID:YU9mY7gP.net(2)
>967
なんでマクロの展開は
macroexpand -> eval -> macroexpand ...
みたいな構造になるんだろう?そっちの方が作りやすいのかな?
lispの実装をしたことがある人は一杯居るだろうからその辺教えてほしいな
コメント1件

971
デフォルトの名無しさん[sage]   投稿日:2014/09/09 13:13:33  ID:xSuWWikN.net
>970のいう他のやり方はどんなの?
コメント1件

972
デフォルトの名無しさん[sage]   投稿日:2014/09/09 14:21:39  ID:3jKRZ45a.net
>967
いいなこれ、ほしい

973
デフォルトの名無しさん[sage]   投稿日:2014/09/09 14:53:22  ID:YU9mY7gP.net(2)
>971
自分が思っていた事としてマクロはコンパイル時に実行される関数としか考えていなかった。
なんで当然common lispの関数で使える機能(例外、ライブラリとして実装したバックトラック機能)もマクロでも使えると思っていた。
だから何故コンパイル時と実行時でできることが違うようになってるのか気になった。他のlispどうなってるのかとかね。
コメント1件

974
デフォルトの名無しさん[sage]   投稿日:2014/09/09 17:52:36  ID:FZ79e7BA.net
>973
それもあるよ

975
デフォルトの名無しさん[sage]   投稿日:2014/09/09 20:12:58  ID:/ZjY2rNK.net
マクロはコンパイル時前提じゃないし。

976
デフォルトの名無しさん[sage]   投稿日:2014/09/09 23:44:21  ID:OOYpvr4f.net
マクロ展開時でも何でもできるのが Lispの良いとこだよ。scheme は知らないけど。

977
デフォルトの名無しさん[sage]   投稿日:2014/09/17 02:49:53  ID:C4OaNAqf.net(2)
(defparameter x 123)
(defun foo ()
(let ((x #'(lambda () x)))
(funcall x)))
としたときに (foo) を評価すると 123 が返ることを期待したのですが、
実際に SBCL で評価してみると、
* (foo)
#<FUNCTION (LAMBDA () :IN FOO) {10044EEACB}>
のように関数が返ります。
1 行目の defparameter の代わりに setq にすると期待通り 123 が返るのですが、
動作の違いがわからなくなってしまいました…。
どなたかわかる方教えて頂けますでしょうか?

978
デフォルトの名無しさん[sage]   投稿日:2014/09/17 07:07:25  ID:qtKu3tUs.net
> 1 行目の defparameter の代わりに setq にすると期待通り 123 が返るのですが、
これが原因. defparameterで宣言すると, ダイナミック変数になる. こういうミスを減らすために*x*のような名前を付けるマナーがある.
トップレベルでsetqだと大丈夫だがこれも微妙. (define-symbol-macro x 123)しても良いがこれも微妙だが、この場合はこっちのが良いか.
コメント1件

979
デフォルトの名無しさん[sage]   投稿日:2014/09/17 21:06:13  ID:C4OaNAqf.net(2)
>978
ありがとうございます。スペシャル変数とレキシカル変数の違いが十分理解できてなかったです。
(funcall x)により#'(lambda () x)が評価されて、xの値が返るのですが、
xはdefparameterでスペシャル変数になっているため、そのときに参照しているxの値、
つまり#'(lambda () x)が返っているようですね。

980
デフォルトの名無しさん[sage]   投稿日:2014/09/18 12:08:50  ID:esVVPZkH.net
スペシャル変数というかダイナミック変数って、何がうれしいの?
コメント2件

981
デフォルトの名無しさん[sage]   投稿日:2014/09/18 12:33:40  ID:gl5GJBEB.net
let で束縛すると便利

982
デフォルトの名無しさん[]   投稿日:2014/09/18 13:56:39  ID:jUxkvtnX.net
>980
「環境」の一時上書き。

983
デフォルトの名無しさん[sage]   投稿日:2014/09/19 00:10:23  ID:5yTgoIyx.net
束縛ってちょっとエッチぽくていやん

984
デフォルトの名無しさん[sage]   投稿日:2014/09/19 06:46:54  ID:O3QZpvkM.net(2)
>980
基本,単に大域変数としてつかわれる.
便利なのは関数の引数をずらずら列べなくても良いところじゃない? 他の言語と一緒だね.

985
デフォルトの名無しさん[]   投稿日:2014/09/19 10:37:36  ID:X120Ti+X.net
帯域脱出するとunbindされるところが大域変数とは違う。
マルチスレッドの時も振る舞いは大域変数と全く異なる。
コメント2件

986
デフォルトの名無しさん[sage]   投稿日:2014/09/19 11:58:41  ID:mBwsz/nF.net
>985
ほうほう

987
デフォルトの名無しさん[sage]   投稿日:2014/09/19 20:42:10  ID:7xkfrLWD.net
オペンキョウしてます
おっぱいあると捗るのに
オマンコご褒美なら捗るのに

988
デフォルトの名無しさん[sage]   投稿日:2014/09/19 22:52:50  ID:O3QZpvkM.net(2)
>985
逆では? ローカルに未束縛な状況は,スペシャル変数でしか作れない.
マルチスレッドでのスペシャル変数の振舞いは規格の外だから,処理系間である一定のコンセンサスがあるだけ.
スペシャル変数と対置して語られる大域変数とは何を指しているのか.トップレベルのsetqは未定義だし.
基本,と前置きしてるのに.

989
デフォルトの名無しさん[sage]   投稿日:2014/09/20 00:28:02  ID:rTgfsjb+.net
ぐだぐだと

990
デフォルトの名無しさん[sage]   投稿日:2014/09/23 12:31:28  ID:hDcmpl2PS
>966,967
それってiter内でbodyをmacroexpand-allすれば、
例外を捕まえれるんじゃないの?
更新情報
・スレッド一覧ページで過去ログのタイトル検索・一覧表示ができるようになりました(2016/1/20)
NGワード登録
登録する
スレッド内検索

プログラム板 タイトル検索

このスレッドが人気です(実況系)
Going! Sports&News★1 (926)NTV実況
ドラマ 火花 最終回★2 (851)NHK実況
フランケンシュタインの恋 #2 ★3 (971)NTV実況
情熱大陸 (962)TBS実況
Love music【道重さゆみ2年4カ月ぶり復活の舞台裏に密着】 (721)フジ実況
NNNドキュメント「わたしの話を聴いてほしい」★2 (35)NTV実況
ダウンタウンのガキの使いやあらへんで ★2 (661)NTV実況
林先生が驚く初耳学★2 (891)TBS実況
このスレッドが人気です(ニュース系)
【世論調査】安倍内閣支持率60%と横ばい 失言・不祥事の影響軽微 [日経新聞]★2 (770)ニュー速+
【世論調査】安倍内閣支持率60%と横ばい 失言・不祥事の影響軽微 [日経新聞] (1000)ニュー速+
【富山】名古屋から富山まで自転車で帰省中の大学生 トラックにはねられ死亡★3 (1000)ニュー速+
【若手経済学者】「給料格差ツイート、狙ってやった」 日本捨てる若手学者の危機感 ★3 (1000)ニュー速+
【富山】名古屋から富山まで自転車で帰省中の大学生 トラックにはねられ死亡★4 (448)ニュー速+
【サッカー】<ボールボーイを小突いて一発退場!>徳島DF馬渡「僕の感情がバッと出てしまった」試合後謝罪..クラブが謹慎処分★10 (673)音楽・芸能ニュース
【ヤクザ】六代目山口組から分裂した神戸山口組から分裂…織田絆誠こと金絆誠が「任侠団体山口組」を結成★2 (947)ニュー速+
【社会】「地毛証明書」、都立高の6割で 幼児期の写真を要求も (755)ニュー速+
プログラム板の人気スレ
オブジェクト指向って自然な文法だな 3 (575)
Excel VBA 質問スレ Part47 (705)
ねねっちと一緒にプログラムを勉強するスレ第2話 (600)
次世代言語議論スレ[Go Rust Kotlin Scala]第4世代 (150)
C言語なら俺に聞け 139 (885)
スレ立てるまでもない質問はここで 147匹目 (437)
【統計分析】機械学習・データマイニング15 (158)
推薦図書/必読書のためのスレッド 81 (905)
くだすれPython(超初心者用) その33 (351)
ふらっと C#,C♯,C#(初心者用) Part127 (408)
C++相談室 part130 (276)
Pythonのお勉強 Part52 (873)
C#, C♯, C#相談室 Part94 (64)
Git 15 (672)
Xamarin Part3 (845)
Visual Studio 2015 Part8 (715)
Swift part10 (462)
Visual Studio 2017 Part2 (139)
クラス名・変数名に迷ったら書き込むスレ。Part27 (948)
C# vs Java どっちが好き? その3 (210)
Ruby 初心者スレッド Part 59 (1000)
Java入門・初心者質問スレ Part.3 (140)
プログラミング言語 Rust 2 (817)
【JavaScript】スクリプト バトルロワイヤル55【php,py,pl,rb】 (643)
【初心者歓迎】C/C++室 Ver.100【環境依存OK】 (636)
Androidプログラミング質問スレ revision53 (212)
VRプログラム雑談【Unity/UnrealEngine】【HTC Vive/Oculus Rift/その他VR】 (545)
このサイトについて
このサイトは2ちゃんねるからデータを取得し、表示するサービスです。
画像のインライン表示機能について
画像のURLの後ろにある[画像をインライン表示]をクリックすると、URLの下に表示します。
表示される画像は横幅100pxに縮小されていて、クリックすると原寸で表示します。
このサイトの特徴
1)スレッド内検索ができます
2)レス(「>>1」など)のポップアップができます
3)不適切な言葉を含む投稿を表示しません
4)ページ内で画像を直接表示できます
5)2ch他スレッドへのリンクはタイトル・板名つきでリンクします
6)すっきりとしたデザインで表示します
7)最新スレや前スレをチェック・一覧表示します
8)NGワード機能の搭載でイヤな言葉が目に入りません
9)荒らしを自動チェックします
10)スレッド内・同一IDの書き込みだけ表示できます
11)レスの返事をレスされた発言の下に表示する「まとめビュー」が利用できます
12)シリーズ化したスレッドの一覧を表示します
13)最新のスレッドがある場合はお知らせします
削除について
こちらをご覧ください
機能要望について
現在機能要望受付中です。
問い合わせについて
こちらのページからどうぞ
広告


首都圏の方、ソフトバンク光オススメですよ


このサイトは2ch.scからデータを取得・表示しています。削除などについてはこちらをご覧ください。 アクセスモード:差分取得 - 新着書き込みなし(304)