もう19時か、
2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50 [PR]FLASHゲームコミュニティー「モゲラ」[PR]  

【入門】Common Lisp その6【質問よろず】

1 :デフォルトの名無しさん:2009/02/18(水) 00:22:16
lispを触ってみたい入門者のQ&A
初心者のQ&A
本スレでは恥ずかしくて聞けない人のQ&A
本スレは高度すぎて割り込めない人のQ&A
linuxでなくてwindowsでやりたいんですが・・・Q&A
lispを使用してC#やJAVAの代替にするための方法(おまけ)

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

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

(list
(url http://pc8.2ch.net/test/read.cgi/tech/1101386936/l50 :part 1)
(url http://pc11.2ch.net/test/read.so/tech/1140012484/l50 :part 2)
(url http://pc11.2ch.net/test/read.so/tech/1181479267/l50 :part 3)
(url http://pc11.2ch.net/test/read.cgi/tech/1201402366/l50 :part 4)
(url http://pc11.2ch.net/test/read.cgi/tech/1215834213/l50 :part 5))

□テンプレート置き場□
ttp://wiki.fdiary.net/lisp/ (id:guest pass:cl)


2 :デフォルトの名無しさん:2009/02/18(水) 00:23:10
((お勧めの Common Lisp 処理系)
(SBCL: http://sbcl.sourceforge.net/
:プラットフォーム UNIX, Linux, Mac, Windows(移植中)
:開発 活発
:日本語 使える(UCS4, UTF8, EUC)
:特徴 一番お勧めのコンパイラ。)

(CLISP: http://clisp.cons.org/
:プラットフォーム UNIX, Linux, Mac, Windows
:開発 そこそこ活発
:日本語 使える
:特徴 バーチャルマシン。遅いがフットプリントが小さい。)

(CMUCL: http://www.cons.org/cmucl/
:プラットフォーム UNIX, Linux, Mac
:開発 そこそこ活発
:日本語 使えない(回避法有り)
:特徴 高速コンパイラ。SBCL の元になった。)

(Clozure CL: http://openmcl.clozure.com/index.html
:プラットフォーム PPC-Linux, Mac, x86_64-Linux と x86_64-FreeBSD に移植中
:開発 そこそこ活発
:日本語 使えない (pre ver 1.1なら多少扱える。)
:特徴 元々商用のコンパイラ。ネイティブスレッドが使える。))

3 :デフォルトの名無しさん:2009/02/18(水) 00:23:42
((商用CL) ;;誰か補完よろ
(Allegro: http://jp.franz.com/index.html
:プラットフォーム Windows ,Mac OS X , Freeを含む各種UNIX
:開発 ほとんど本陣
:日本語 使える(内部UTF16,外部 プラットフォーム毎)
:特徴 お高いがもっとも頼れる。申し込みが必要だがFree Express Editionあり )
(LispWorkss: http://www.lispworks.com/downloads/index.html
:プラットフォーム Windows ,Mac OS X
:開発 半年にいっぺんくらいアップデート
:日本語 使えるみたい(完全に対応しているかはちとわかりかねまする)
:特徴 IDEベースです、フリー版はconsセルの上限が来るとダイアログ
がでてしまいます、SDLとかで遊ぶとすぐに引っかかります ))

((その他)
(ABCL: http://armedbear-j.sourceforge.net/
:特徴 JavaVM 上で動く。JavaVM のバイトコードを生成。)

(GCL: http://www.gnu.org/software/gcl/
:特徴 日本発 Kyoto Common Lisp の直系。)

(ECL: http://ecls.sourceforge.net/
:特徴 Lisp->C コンパイラ。組み込み可能らしい。こちらもKCLの系譜))

4 :デフォルトの名無しさん:2009/02/18(水) 00:24:37
ANSI Commn Lisp 仕様関係
http://www.cs.cmu.edu/afs/cs.cmu.edu/project/ai-repository/ai/html/cltl/cltl2.html
http://lispdoc.com/
http://clqr.berlios.de/index.html

日本語のチュートリアル
ttp://www.fireproject.jp/feature/common-lisp/index.html
ttp://www.geocities.jp/m_hiroi/xyzzy_lisp.html
ttp://home.soka.ac.jp/~unemi/LispProlog/
ttp://www.haun.org/kent/lisp1/
ttp://wisdom.sakura.ne.jp/programming/lisp/index.html


5 :デフォルトの名無しさん:2009/02/18(水) 00:25:09
進んだ話題が欲しい人に...
(和文)
ttp://www.geocities.co.jp/SiliconValley-SanJose/7474/index.html
ttp://lispuser.net
(英文)
http://wiki.alu.org:80/
http://www.cl-user.net
http://www.common-lisp.net
http://planet.lisp.org/
http://groups.google.co.jp/group/comp.lang.lisp
http://www.cliki.net/index
http://cl-cookbook.sourceforge.net/
http://www.gigamonkeys.com/book/
( http://www.apress.com/free/ よりpdf版が入手可能)
http://www.psg.com/~dlamkins/sl/cover.html
http://www.cs.cmu.edu/~dst/LispBook/index.html

その他の情報
http://ja.wikipedia.org/wiki/Common_Lisp

6 :デフォルトの名無しさん:2009/02/18(水) 00:26:09
((おまけの処理系
(POPLOG: http://www.cs.bham.ac.uk/research/poplog/freepoplog.html
Lisp, Prolog, ML のコンパイラ)
(WCL: http://wcl.kontiki.com/
Shared Library として使える Lisp)
(Movitz: http://common-lisp.net/project/movitz/movitz.html
フルスクラッチの Lisp OS)
(CADR LispM: http://www.heeltoe.com/retro/mit/mit_cadr_lmss.html
MIT で使われていた LispM のソースを公開したもの)))

((その他のリンク
(Common Lisp JP: http://www.lingr.com/room/gKpArxPn9wi
チャット)
(lush: http://lush.sourceforge.net/
Lisp Universal Shell)
(実践common lisp: ttp://pcl.lispuser.net/ 実践common lisp 非公式サポートページ)
(Paul Graham の ANSI Common Lisp:
http://www.pearsoned.co.jp/hed/search/onlinecatalog.html?id=276
Common Lisp の 参考書を探しているならこれ一択)))

7 :デフォルトの名無しさん:2009/02/18(水) 01:17:07
>>1
(乙 'make-thread)

8 :デフォルトの名無しさん:2009/02/18(水) 01:23:03
>1乙

9 :デフォルトの名無しさん:2009/02/18(水) 02:32:40

         *、 *、      。*゚    *-+。・+。-*。+。*
        / ゚+、 ゚+、   *゚ ・゚    \       。*゚
       ∩    *。  *。    +゚    ∩    *
   (´・ω・`)      +。   +。   ゚*     (´・ω・`)
   と   ノ      *゚  *゚    ・     。ヽ、  つ
    と、ノ     ・゚  ・゚     +゚    *  ヽ、 ⊃
     ~∪    *゚  *゚      *    +゚    ∪~   ☆
          +′ +′      +゚   ゚+。*。・+。-*。+。*゚


10 :デフォルトの名無しさん:2009/02/18(水) 09:42:40
こんなスレあったんですね!

11 :デフォルトの名無しさん:2009/02/18(水) 09:51:01
あったんですよ奥さん!

12 :デフォルトの名無しさん:2009/02/19(木) 01:20:23
そうなんですか?カワサキさん!


13 :デフォルトの名無しさん:2009/02/19(木) 01:54:05
今なら大安の日セールにつき、宝石盆栽の富貴樹が29800円ぽっきりですよ奥さん

14 :デフォルトの名無しさん:2009/02/19(木) 02:02:42
そんな感じでAllegroCLを安売りしてくれないかしらw

15 :デフォルトの名無しさん:2009/02/19(木) 02:59:44
Allegro店売りしてないのが困る


16 :デフォルトの名無しさん:2009/02/19(木) 03:35:30
Allegro購入して使ってる会社って国内で何社くらいあんのかね。
まじ就職してえわ

17 :デフォルトの名無しさん:2009/02/19(木) 06:37:27
50万ぐらいだっけ?
matlabと同じぐらいか

18 :デフォルトの名無しさん:2009/02/19(木) 11:38:44
>>1


19 :デフォルトの名無しさん:2009/02/19(木) 13:58:25
>>17
へー、俺が想像してたよりも安い

20 :デフォルトの名無しさん:2009/02/20(金) 11:35:29
http://ccl.clozure.com/blog/?p=36
Clozure CL 1.3 release candidate
* Mac OS X 10.4 and later (PowerPC and x86)
* Linux (PowerPC and x86)
* FreeBSD 6.x and later (x86)
* Solaris (x86)
* MS Windows (x86)

21 :デフォルトの名無しさん:2009/02/20(金) 12:50:06
>>17
過去本スレで100万とか1000万とかとにかく高そうな話はあったけど
今は案外お手頃になってるのか


22 :デフォルトの名無しさん:2009/02/21(土) 01:34:19
>>20
グッドニュースさんきゅ。

23 :デフォルトの名無しさん:2009/02/21(土) 04:51:38
http://www.franz.com/products/packages/
$599
なんて書いてあるけど

24 :デフォルトの名無しさん:2009/02/21(土) 10:54:56
どんどん桁が下がっていくな
もうしばらく待つか

25 :デフォルトの名無しさん:2009/02/21(土) 12:10:12
確かstudent priceじゃなかったか?<$599

26 :デフォルトの名無しさん:2009/02/24(火) 12:14:03
cmuclの19f(現在プレバージョン)だが、新しいくsse2の命令を使うようになったんだね。x8664版
はでてないけど、高速化は期待できるのかも。

27 :デフォルトの名無しさん:2009/02/26(木) 23:25:01
非SchemeなLispではドットリストなformはどう扱われることが多いのでしょうか。

(+ 1 2 . 3) ; <- こういうの

どうもCommonLispでは仕様で決まってなさそうなのですがなにか理由があるのでしょうか。


28 :デフォルトの名無しさん:2009/02/26(木) 23:37:55
普通にエラーです。

29 :27:2009/02/27(金) 01:31:16
(+ 1 2 . 3) みたいなのはSBCLではエラーとなりましたが、CLISPとxyzzyでは普通に通りました。どうもドット以下はnilあつかいされているみたいです。
HyperSpecで確認してみましたがSection 3.1.2.1 Form Evaluation のところにはproper-listでなければならないとは書いていないような気がします。
実装依存にせよエラーにせよ、書かない理由もよく分からないので気になります。


30 :デフォルトの名無しさん:2009/02/27(金) 01:42:45
GCLでは(+ 1 2 . 3)は6になるな

31 :デフォルトの名無しさん:2009/02/27(金) 09:14:39
Common Lispの仕様は常識で分かるところは書いてない。
だからISO Cと同じくらいのサイズに収まってる。

32 :27:2009/02/27(金) 20:24:16
たしかにこんなコードを書く人はまずいないからわざわざ標準で定める必要もないといえばないですね。
未定義の処理系依存エラーと把握しました。

今Lisp処理系を作っていてちょっと気になったので聞いてみました。
どうもありがとうございます。


33 :デフォルトの名無しさん:2009/02/28(土) 15:33:37
pythonのzopeやDjangoに対応するものはlisp
ではどれになるのでしょうか


34 :デフォルトの名無しさん:2009/02/28(土) 18:30:33
無い
lisperは自分で自分用のフレームワーク作るから

35 :デフォルトの名無しさん:2009/02/28(土) 22:25:50
>>33
フレームワーク: ないことはないけど、 (2、3あった) そっちはあまり知らない。

36 :デフォルトの名無しさん:2009/02/28(土) 23:17:23
>>33
weblockとかhunchentootとか?
hunchentootは使ってて楽しいよ


37 :デフォルトの名無しさん:2009/03/01(日) 09:33:05
↓数箇所の回答が無いが、Lispの練習問題として、暇な時にやってみると面白い。
L-99: Ninety-Nine Lisp Problems
ttp://www.ic.unicamp.br/~meidanis/courses/mc336/2006s2/funcional/L-99_Ninety-Nine_Lisp_Problems.html

38 :デフォルトの名無しさん:2009/03/02(月) 12:11:58
EmacsでのLisp開発環境としてSLIMEを使用しているのですが、
画面を二分して上のS式をC-x C-eで評価したときに
(in-package :hoge)
と言う式を評価したときにslimeのREPLでは
CL-USER>
のままでhogeのパッケージに入ってもらうにはREPLで
(in-package :hoge)
と打たなければなりません。これは設定で解消できるのでしょうか?
それとも仕様でしょうか?よろしくおねがいします。

39 :デフォルトの名無しさん:2009/03/03(火) 16:05:03
cffiの中級者ぐらいの質問はどこですればいいのでしょうか?

40 :デフォルトの名無しさん:2009/03/04(水) 21:30:17
comp.lang.lispじゃね

41 :デフォルトの名無しさん:2009/03/06(金) 23:54:50
http://prabuinet.blogspot.com/2009/02/he-box.html

うぃんどうず用のlispbox 付属のemacsの日本語対応はよくわからん。参考にしてntemacs-ja
やmeadowあたりを入れても良いかもな。
onjoさんも日本人用のものを作ってたと思うけど。

42 :デフォルトの名無しさん:2009/03/08(日) 09:59:33
http://www.daansystems.com/lispide/

windowsの人ならこれでも良いかもな。windowsでslimeまで使えるようにするのは
敷居が高いしね。

43 :デフォルトの名無しさん:2009/03/08(日) 19:46:49
eclipse上で使うCUPSとかってあれからどうかわったんだろう?
うちはWindowsXPがx64なのでsbclが動かないから試せないんだ


44 ::2009/03/09(月) 14:30:40
Windowsの
AllegroCommonLispのLispBoxでasdf-installをしようと思ったのですが

CL-USER> (asdf-install:install :fare-match)
Package "ASDF-INSTALL" not found. [file position = 14]
[Condition of type READER-ERROR]
; Evaluation aborted

とエラーが出てうまくいきません
何か特別な操作が必要なのでしょうか

45 :‍44:2009/03/09(月) 15:21:10
とりあえず(require 'asdf)としてみたのですがNILが返ってきてしまいます

http://www.cliki.net/asdf
このサイトには
If you have SBCL, OpenMCL, ECL or ACL, it's bundled and you need only (require 'asdf).
こう書いてあるのにどうしてなんでしょうか

46 :デフォルトの名無しさん:2009/03/09(月) 18:45:40
asdfとasdf-installは(ちょっと)違うよ。
ttp://www.cliki.net/ASDF-Install


47 :44:2009/03/14(土) 18:48:08
http://common-lisp.net/project/asdf-install/tutorial/index-save.html#install-asdf-install
ここを参考にして

CL-USER> (pushnew "C:/asdf-install/asdf-install/" asdf:*central-registry* :test #'equal)
("C:/asdf-install/asdf-install/" *DEFAULT-PATHNAME-DEFAULTS*)
CL-USER> (asdf:operate 'asdf:compile-op :asdf-install)
; Evaluation aborted

入力してみたんですが

component "asdf-install" not found
[Condition of type MISSING-COMPONENT]

こうなってしましました

48 :デフォルトの名無しさん:2009/03/14(土) 19:35:30
>>47
asdf-install を*ちゃんと*どっかから持ってきた?


49 :44:2009/03/14(土) 19:51:43
http://common-lisp.net/project/asdf-install/asdf-install_latest.tar.gz
これをCドライブ直下に解凍し、

http://cclan.cvs.sourceforge.net/cclan/asdf/
さらにここからasdf-install.lispをダウンロードしてasdf-install.asdと同じフォルダに入れています

50 :デフォルトの名無しさん:2009/03/14(土) 21:57:48
おま、俺様インストールじゃなくてREADMEがそこにあるんだから読めよ。

51 :i118-19-145-49.s04.a012.ap.plala.or.jp :2009/03/15(日) 14:55:51
>>38
> EmacsでのLisp開発環境としてSLIMEを使用しているのですが、
> 画面を二分して上のS式をC-x C-eで評価したときに
> (in-package :hoge)
> と言う式を評価したときにslimeのREPLでは
> CL-USER>
> のままでhogeのパッケージに入ってもらうにはREPLで
> (in-package :hoge)
> と打たなければなりません。これは設定で解消できるのでしょうか?
> それとも仕様でしょうか?よろしくおねがいします。


(defpackage :hoge
(:use :common-lisp)) C-x C-e

(in-package :hoge) C-x C-e

C-x o でREPLにカーソルを持ってきて
,キーを押下
ミニバファでCommand:って出るからchange-packageとして
Package: hoge



52 :38:2009/03/15(日) 15:37:10
ありがとう御座います。
非常に助かりました。

53 :デフォルトの名無しさん:2009/03/15(日) 16:30:10
>>51
専ブラアップデイトしろ

54 :デフォルトの名無しさん:2009/03/18(水) 12:45:21
>>51
C-x oじゃなくてslime selecterにキー割り当てるのはしないの?


55 :デフォルトの名無しさん:2009/03/18(水) 20:35:22
>>53

やっちまったぜぇ
ありがとう

>>54
> >>51
> C-x oじゃなくてslime selecterにキー割り当てるのはしないの?

slime selecterの説明が必要だろ
この場合は C-x o じゃ駄目か?


56 :デフォルトの名無しさん:2009/03/18(水) 20:51:19
ここでいいのかな?
最近 slime モードのテキストバッファ(要は lisp ファイルを編集している時)
の、日本語入力が不自由なんだけど、これは *BSD で Wnn7 を使い続けてる
俺ん所だけの現象???


57 :デフォルトの名無しさん:2009/03/18(水) 21:19:27
不自由とは?何かSLIMEが悪さするのかな。SKK使ってるけど、何も感じないです。

58 :デフォルトの名無しさん:2009/03/18(水) 21:37:00
>>57
うち固有だとは思うんだが、今年の正月すぎからスペースで変換しなった
repl バッファは変換する。たぶん egg のキーマップ周辺

slime はとりあえず動いてるし、日本語出力する用事もないし、「かな漢」
までめんどうみてる暇もないので放置状態

emacs のバージョン問題もあるかも知れない


59 :デフォルトの名無しさん:2009/03/18(水) 21:56:24
ほう、いまどきBSDとは。NetかDragonflyか。
お主、ブラックボックスは嫌いなのではないか?
フフフ。丁度良い物がある。

つ SKK

60 :デフォルトの名無しさん:2009/03/19(木) 01:02:13
SKKは確かにYoi

61 :デフォルトの名無しさん:2009/03/19(木) 01:11:26
SKKはLisper向けですから。。。

62 :デフォルトの名無しさん:2009/03/19(木) 10:34:43
ねーよw

63 :デフォルトの名無しさん:2009/03/19(木) 12:14:24
skkはyatexとkeybind重なるから使ってない

64 :デフォルトの名無しさん:2009/03/19(木) 16:54:41
(defmacro util-fout (filename &body body)
`(with-open-file (os ,filename :direction :output :if-exists :supersede)
,@body))
として、
(util-fout "filename" (format os "hello world"))
などと使うような util-fout を重宝して使っているのですが、
すぐに分かるとおり、os は外部変数補足をするので困っています。
もっと良い設計はありませんか?
with-open-file をそのまま書けばいい。というのももっともですが、、、


65 :デフォルトの名無しさん:2009/03/19(木) 22:24:29
>>51
C-c C-z

66 :デフォルトの名無しさん:2009/03/20(金) 00:16:33
>>64
REPLでぐだぐだコード書く時に同じよーなマクロ使うけど、
困るような所では使わないなあ。
(defmacro >> (fn &body body)
`(let ((*standard-output*
(open ,fn :direction :output :if-exists :append :if-does-not-exist :create)))
(prog1 (progn ,@body)
(close *standard-output*))))
(>> "./hoge.txt" (mapc #'print '(hoge fuga hage)))

普通にプログラムを書く時はwith-open-fileを使った方が
良いと思ってるんだけどどうなんだろ。
慣用句っぽいマクロとかあるのかな。

67 :デフォルトの名無しさん:2009/03/20(金) 02:11:14
>>64
アナホリックマクロ


68 :デフォルトの名無しさん:2009/03/20(金) 02:14:19
>>64
http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/variableCapture.html


69 :デフォルトの名無しさん:2009/03/20(金) 17:18:20
>>65
> >>51
> C-c C-z

おぉ,正しくはこれか
ありがとう
でも,つい C-x o を押してしまうよ(笑



70 :64:2009/03/23(月) 12:18:02
>>66-68 さんくす。
アナフォリックマクロ&自分のコードということで、
"os" の変数名を長くしてパッケージに入れることまではして、
とりあえずそのままにしました。

71 :デフォルトの名無しさん:2009/03/24(火) 21:50:34
cp mkdirなどのunixのコマンドを
common lispから使う方法はないのでしょうか

簡単に言うとシェルスクリプトをcommon lispで書きたいのです

72 :デフォルトの名無しさん:2009/03/25(水) 01:29:33
clispで
(ext:run-shell-command "ls")
とか?
sbclの場合sb-ext:run-programだそうな

73 :デフォルトの名無しさん:2009/03/25(水) 02:22:44
穴掘り熊五郎、と覚えよう

74 :デフォルトの名無しさん:2009/03/25(水) 02:23:02
(ext:dir)
(ext:cd)

75 :デフォルトの名無しさん:2009/03/27(金) 16:16:58
パッケージの中のシンボル等をエクスポートする際には
defpackage の中の :export に記述する必要があるはずですが、
クラスをパッケージの中で定義する際に、
クラス名がエクスポートされていればいつでもスロットのアクセス関数等も
エクスポートされているようにするにはどうしたら良いですか?
全てのアクセス関数を :export に書かないといけないとすると不便すぎるのですが。

76 :デフォルトの名無しさん:2009/03/27(金) 21:27:32
>>75
なんか方法あるのかね
自分が使ってる有名どころのパッケージのソース見てみたけど全部列挙してるね。
まあ、外部とのインターフェースとなる部分だから慎重さが必要な部分だし不便ぐらいでちょうどいいんじゃない
defpackageは便利マクロであってエクスポートの唯一の手段じゃないからCLOSの機能を駆使すればできそうにも思うけど自分には無理だ


77 :デフォルトの名無しさん:2009/03/27(金) 21:27:44
不便すぎる、というか違いすぎるんだろう。
もれも仕事ではJavaとかなんで>>75の言いたいことはわかる気がするが、
CLOSの場合はアクセス関数といってもクラスに所属するのものではないからなぁ。
CLOS流儀に馴染むというか、考え方をかえてもらうほうが建設的かな。
本当に細粒度にアクセサを公開しないといけないの?もっと美しいインターフェースは設計できない?


78 :デフォルトの名無しさん:2009/03/27(金) 23:21:48
defexternalmethodとかオレオレdefclassとか作れば書くのは簡単になるかもだけど
読む側からしたら頭の方にexportでまとまってた方が追うのが楽じゃないかなとか思った。

ちょっとずれるけど、これ思いだした。
ttp://d.hatena.ne.jp/patterson/20081115/1226724801
>Q2:defclassを書くのって面倒くさい、黒田さんは全部書いていますか?
>A2:emacsの機能で楽してるけど、全部書いている。
>
>Q2:マクロは使わないのですか?
>A2:マクロを入力量を減らすために使うのは勧めない。
>Editorでがんばるべき。マクロは新しい語彙を入れ込むためのもの。
>安易に使うべきでない。自然言語の世界でも自分勝手な言葉を
>話すやつとはつき合いたくない。

79 :デフォルトの名無しさん:2009/03/27(金) 23:42:10
マクロは最終手段だからね。下手に作ると分かりにくくなるが、
上手に作れば読みやすいソースになる。
オブジェクト指向の人がやたらクラスを作ってスパゲティにするのと似てるかも。
関数を作るにしてもinlineを使えば埋め込むこともできるけど、これは最適化のときの話
だもんな。

80 :75:2009/03/27(金) 23:49:23
>>76-78 さんきゅです。
なるほど。アクセス関数は総称関数側だったんですね。
defclass で書いてるのでクラス側にあるのかと勘違いしていました。
じつは MOP でなんとかならないかといろいろ勉強してたんですけど、
ギブしました。

defpackage の :export の部分を間違えずに書けるように、
ファイル内のシンボル等の定義を読み、公開用には ":" をつけながら
全て出力するツールを作ってたんですけど、
これをアクセス関数にも適用できるように変更することとしました。
それでとりあえず良しとします。

81 :デフォルトの名無しさん:2009/03/27(金) 23:58:14
>>80
こういうのは違うかな
http://common-lisp.net/project/moptilities/documentation/metabang.moptilities-package/function-generic--functions.html
試してないけど総称関数を列挙してくれそうな雰囲気。

82 :デフォルトの名無しさん:2009/03/28(土) 00:23:54
というわけで試してみたよ
> (defclass a () ((a :reader a-of)))
#<STANDARD-CLASS A>
> (moptilities:generic-functions 'a)
(#<STANDARD-GENERIC-FUNCTION A-OF (1)>)
取り出せたけど関数オブジェクトからどうやって元のシンボルに戻せば。。。うう


83 :デフォルトの名無しさん:2009/03/28(土) 00:36:58
もうちょい試してみたよ
他の関数を使えば望みのことはできそうだ
> (moptilities:slot-names 'a)
(A)
> (moptilities:slot-properties 'a 'a)
(:NAME A :INITARGS NIL :INITFORM NIL :READERS (A-OF) :WRITERS NIL
:DOCUMENTATION NIL)
クラスのスロットの属性にアクセスできりゃもうこっちのもんでしょ
アクセサ関数のシンボルを取り出してexportしてやればいい


84 :デフォルトの名無しさん:2009/03/28(土) 01:14:01
そういうわけで試した結果これでどう?
指定したクラスのアクセサ関数(リーダ関数だけを見てるのでもうちょっとリファイン必要)を全部exportする。
(defun export-slot-accessors (cls)
 (loop for a in (loop for s in (moptilities:slot-names cls)
    nconc (destructuring-bind (&key readers &allow-other-keys)
        (moptilities:slot-properties 'a s) readers))
  do (export a)))
しかしなあ主にパッケージ使う側の人間から言わしてもらうとあれこれエクスポートするパッケージは使いにくいぞな


85 :デフォルトの名無しさん:2009/03/28(土) 06:12:53
>>84
そんなのだめだぁ。必要もないものexportしないでくれぇぇぇ。
exportするものは厳選すべき。

86 :デフォルトの名無しさん:2009/03/28(土) 09:10:07
パッケージの分割の設計を見直したほうがいいんじゃないか?

87 :デフォルトの名無しさん:2009/03/28(土) 22:55:28
Mac版のLispWorks Personalで遊んでいます。
リスナーやエディタウィンドウで日本語'を入力したいのですが、まともに
入力/表示出来ません。こういうものですか?
Windows版ではどうですか?

88 :デフォルトの名無しさん:2009/03/28(土) 23:40:53
Win版では日本語の入出力出来るみたいよ

89 :87:2009/03/29(日) 11:45:50
>>88
情報ありがとうございます。
うーん、Mac版も内部的にはちゃんと処理しているみたいなんですけど。
Slime経由で使えばいいのかな…。




90 :デフォルトの名無しさん:2009/04/08(水) 09:59:33
gsllとnlisp統合されないかなあ

91 :デフォルトの名無しさん:2009/04/09(木) 09:49:11
数日前からCommon Lispを勉強し始めました。そこで疑問点が出てきました。

単一ディスパッチの言語だとクラスは名前空間の導入という側面があると
思いますが、多重ディスパッチの言語だとメッセージ送信先がひとつではないため、
一意に定まらないと思います。
よってCLOSのクラスでは名前空間の導入は行えない、これは分かります。

ここからが質問なんですが、CLOSにおいて、総称関数の名前空間の汚染に対しては
どのように対処すればよいのでしょうか?

パッケージシステムが解なのかと思いましたが、そうなると、オブジェクトごとにパッケージを
用意する必要がありますので、とても面倒な気がします……

92 :デフォルトの名無しさん:2009/04/09(木) 10:13:17
・パッケージシステムには名前空間管理が含まれてる。
・総称関数は名前空間を越えて共通の名前であることが有用性上に重要。
それを名前空間を汚染するという風には考えない。
そのくらい名前は重要。


93 :デフォルトの名無しさん:2009/04/09(木) 11:23:31
>>92
ありがとうございます。ですが、メッセージ名を気をつけても、現実としてメッセージ名の
衝突は起こると思います。

たとえばC++で申し訳ないんですが、
class Foo
{
virtual void update() = 0;
};

class Bar
{
virtual void update(bool flag) = 0;
};
があるとすると、メッセージ名がupdateと同じでもメッセージのプロトコルが違います。
C++なら単一ディスパッチなので、メッセージ送信先とメッセージ名で呼ぶべきメッセー
ジのプロトコルが定まります。
ですが同じことをCommon Lispでしようとしたら、パッケージにくるんで、呼び出し元で

(foo:update foo-instance)
(bar:update bar-instance t)

とする方法か、もしくは総称関数を

(defgeneric update (o &rest rest))

と定義するくらいしか思いつきません。前者はどうみても冗長ですし、後者はCommon Lisp
の引数チェック機構が死にます。

根本的に勘違いしてる可能性もありますが、うまい方法はないでしょうか。

94 :デフォルトの名無しさん:2009/04/09(木) 12:38:25
>>93
(defclass foo () ())

(defclass bar () ())

(defgeneric update (obj &rest args))

(defmethod update ((obj foo) &rest args)
(declare (ignore args))
...)

(defmethod update ((obj bar) &rest args)
(destructuring-bind (flag) args
...))

何か問題があるのだろうか?


95 :デフォルトの名無しさん:2009/04/09(木) 13:33:16
>>94
ありがとうございます。
この場合困るのが、クラスBarを後から追加した場合です。
クラスFooを作ったときに作った総称関数とメソッドの定義を変更しないといけませんが、
これはOpen-Closed-Principleの観点から言ってよい方法であるとはいえません。

これを回避しようとしたらおそらくはパッケージシステムを使うことになるのでしょうが、
(foo:update foo-instance)
(bar:update bar-instance obj)
という冗長な記述になってしまいます。

あるいはパッケージにくるんだ上で、
(defgeneric update (obj &rest args))
という総称関数を作ってdefmethodで分岐するという手もありますが、単一ディスパッチの
言語では必要無かった苦労(パッケージング、defmethodの実装)を強いられる、という点で
腑に落ちません。

もし「総称関数は名前が重要。衝突しないように名前は決めるべき」というのが解ならば、いうのは
簡単です。
ですが、それを真に実現しようと思ったら、作るべきクラスのインターフェイスを書く前からすべて把
握する必要があります。これは非現実的です。

この辺りCLOSではどうやって解決するのがよいのでしょうか?
それともこんなものなのでしょうか。


96 :デフォルトの名無しさん:2009/04/09(木) 15:03:53
操作内容の意味が変わるんだったら, 名前変えればいいんじゃないの?
つか flag に相当する部分は, 普通, クラスに閉じ込めないか?
通常, リファクタリングの最有力候補だよね >>93 って.

> 言語では必要無かった苦労(パッケージング、defmethodの実装)を強いられる、という点で
> 腑に落ちません。

どっち転がってもメソッドは定義しなきゃいけないわけで,
たいした手間じゃないだろうに…

(defmethod bar ((obj foo))
(if *bebhavior-flag*
...))
(let ((*behavior-flag* t))
(bar (make-instance 'foo)))

的な, 逃げもなくはないが…


97 :デフォルトの名無しさん:2009/04/09(木) 17:30:52
問題にしてるのは
・メッセージ名が同じ
・プロトコルが異なる
この二つを満たすメッセージを定義する上手い方法が総称関数には無いのではないか、という点です。
単一ディスパッチの言語にはあるにもかかわらず、です。

リファクタリング等の話は前提を覆しています。

>どっち転がってもメソッドは定義しなきゃいけないわけで,
>たいした手間じゃないだろうに…
単一ディスパッチの言語で必要のないこと、という点で大きな手間です。
単一ディスパッチの言語ならばメソッドのパッケージングもクラスによって分岐するメソッドの
定義も不要です。
もし統一的に表すために新たに総称関数を新たに定義した場合、その総称関数をどこに配置
するかという事も新たに考えねばなりませんし、機械でできそうな処理を人間が書く必要が
あるという点でLisp的ではない気がします。

もしこのような場合、Common Lispでは単一ディスパッチ言語が提供していたクラスによる名
前空間の導入を手動で行わなければならない、そういう仕様だ、というのならそういうものな
のかとあきらめます。
ですが、もし上手い方法があるのであれば教えてほしいと思った次第です。


98 :デフォルトの名無しさん:2009/04/09(木) 18:24:35
>>97
上のほうで誰かが名前重要って書いてるよね
updateって名前がまずだめ。「更新」てどんだけ広い概念を総称させとる
そらぶつかるわ
総称関数はメッセージ名じゃないし
マルチプルディスパッチの言語では簡単なことが単一ディスパッチの言語だとくそ面倒くさくなるよね。そして逆のこともあるよ
既知の概念で理解できないものを否定して安心したがる心理はある程度理解するが、なぜ君の知ってる言語の延長線上にLispがあると思った?別もんだぞ
でもってC++に帰りな。マジオススメ。C++のほうがうまく書けるものをなんでLispでやる



99 :デフォルトの名無しさん:2009/04/09(木) 19:29:08
>>98
すいません、わからない点があるのですが、

>総称関数はメッセージ名じゃないし
確かに総称関数の名前がメッセージ名では無いとすると、今までの私の指摘は当たらないことになります。
ですがそれならば、総称関数の名前はオブジェクト指向における何を表現しているのでしょうか?そしてどういう
名前が適切なのでしょうか?

updateが出たのでJavaのObserverパターンの実装を例に挙げます。Observableの実装は
どうでもよいとして、JavaのObserverの実装を機械的にCommon Lispに変換しますと

(defgeneric update (o obj arg))

になると思いますが、貴方の話ですとこの総称関数名はまずいということになります。
(クロージャで事足りるでしょうが、ここではそういう話はしてないのに注意してください)
クラス名をプレフィックスやサフィックスにしたり、クラス名のパッケージで包むという方法は考えられますが、
それは単一ディスパッチの言語に比べて冗長であるのは先に書いた通りです。

この場合、どのような名前が適切になりますか?

>既知の概念で理解できないものを否定して安心したがる心理は
多重ディスパッチや総称関数について一度も否定してません。
ただ総称関数だと上手く記述できない場面があるのではないか、という話をしているだけです。
これを否定と捉えて煽るのはちょっとひねくれすぎてるのではないかと。


100 :デフォルトの名無しさん:2009/04/09(木) 19:41:21
と書いてて思ったのですが
>マルチプルディスパッチの言語では簡単なことが単一ディスパッチの言語だとくそ面倒くさくなるよね。そして逆のこともあるよ
要するに今指摘してる点が多重ディスパッチで困難な点、ということなのでしょうか?

101 :デフォルトの名無しさん:2009/04/09(木) 20:15:41
もちろん、 Java 風のオブジェクトシステムで上手く記述できないものもあるよね。
Java 風の思想をそのまま持ち込むとうまく当て嵌らないのはアタリマエで、
デザインパターンを持ち出して「これをCLで書くと…」なんて議論はナンセンス。
だいたいオブジェクト指向なんてのも広すぎる概念で、
CLのオブジェクト指向は Java とは違ったオブジェクト指向なんだよ。
Java なんか一旦忘れろよ。

102 :デフォルトの名無しさん:2009/04/09(木) 22:31:46
>>95 defmacro


103 :デフォルトの名無しさん:2009/04/09(木) 23:16:29
違う概念に対してupdateという同じ名前を使うというのが破綻している。

概念A に対しては パッケージX:update
概念B に対しては パッケージY:update

という別の名前を使うんだよ。
自分の知らないことを自分の知っている範囲の見方でしか切らないくせに

> これを否定と捉えて煽るのはちょっとひねくれすぎてるのではないかと。

とか笑ってしまうわ。

104 :デフォルトの名無しさん:2009/04/09(木) 23:25:38
>>95

>問題にしてるのは
>・メッセージ名が同じ
>・プロトコルが異なる
C++のオーバーロードのおかげで「同じメッセージ」のように見えるが、実態としてメッセージとしてもプロトコルとしても同じではないものな希ガス。
というか、あえて言うならメンバ関数名とシグネチャあわせてひとつのメッセージ名でないの?

function update(target, flg) {
  target[arguments.callee.name+'With'+flg.constructor.name].apply(null, arguments);
}
function updateWithBoolean(target, flg) { // update(obj, true)相当
  /* ほげほげ */
}
function updateWithNull(target) { // update(obj)相当
  /* ふがふが */
}

↑こういう付加情報からのメッセージ名推測(?)みたいな動的なことをC++,Java他はコンパイル時に暗黙のうちにやっているというだけでないのかな。
>この二つを満たすメッセージを定義する上手い方法が総称関数には無いのではないか、という点です。
>単一ディスパッチの言語にはあるにもかかわらず、です。
異なるメッセージをプレフィクスに基づいて同じメッセージのように推測するという「特別扱い=オーバーロード」があるかないかというだけで、
単一ディスパッチ/多重ディスパッチの問題じゃないんじゃないかと思うぞ。Objective-Cなんかこういうことしてくれないでしょ。単一ディスパッチ”なのにもかかわらず”。
>もし統一的に表すために新たに総称関数を新たに定義した場合、その総称関数をどこに配置
>するかという事も新たに考えねばなりませんし、機械でできそうな処理を人間が書く必要が
>あるという点でLisp的ではない気がします。
そこでLisp的にはマクロの出番なんでないかな。

※Lisp系のスレでJavascriptで答えてしまってすまないorz


105 :デフォルトの名無しさん:2009/04/10(金) 00:18:06
>>99 すまん。つい煽りっぽく書いたら煽りレスを呼び寄せてしまった
で、総称関数のラムダリストには決まりがある
それぞれのラムダリストは同じ個数の必須引数を持っていなければならない
それぞれのラムダリストは同じ個数の付加引数を持っていなければならない
その他いくつかの決まり事がある。>>93はこの決まりを守ってない
だからCLOSでは書けない。あきらめがつくならあきらめてくれ
総称関数がクラスの所有物でない時点で、関数名のみで自己説明的であるべきなんだよ
衝突しやすい名前選んどいて衝突したとかいうな
それでも衝突した場合にはどちらをインポートするかどっちもしないのか選べるんだし
どちらもインポートしなければ>>93の場合、あなたがどう見ても冗長と
言ってる方法で明示するしかないし自分にはどう見ても冗長に見えない
必要にして十分なことしか書いてない


106 :デフォルトの名無しさん:2009/04/10(金) 00:21:17
おいオメー、さっきからうるせえぞ。「メッセージ名」「メッセージ名」ってよぉー
どういうつもりだてめー
そういう言葉は、オレたちの世界にはねーんだぜ……
そんな、弱虫の使う言葉はな……

「メッセージ名」…そんな言葉は使う必要がねーんだ。
なぜなら、オレや、オレたちの仲間は、
CLOSすると、頭の中に思い浮かべた時には!
切り替えが終わっちまってるからだッ!
だから使った事がねぇー

わかるか?俺の言ってる事…え?
「総称関数」なら、使ってもいいッ!

107 :デフォルトの名無しさん:2009/04/10(金) 01:06:12
プロシュート兄貴乙

108 :デフォルトの名無しさん:2009/04/10(金) 01:16:05
メッセージ渡しなOOだと「このオブジェクトの仕事は何か」から考えるだろうけど、
総称関数なCLOSだと「この関数の仕事は何か」から考えるから、
両者だと発想の順序が逆っていうか。
総称関数の名前がぶつかったらどうしようって心配は、
ある意味クラス名がぶつかったらどうしようって心配くらいには杞憂なんじゃないかな。

109 :デフォルトの名無しさん:2009/04/10(金) 01:26:36
>>104
>というか、あえて言うならメンバ関数名とシグネチャあわせてひとつのメッセージ名でないの?
ああ、確かにそう考えると視野が広がります。

多重ディスパッチだと、メッセージ送信先もメッセージ名の一部と考えることができ、
そしてCLだとたまたまオーバーロードの機能が無い=異なるシグネチャから実行すべきメッ
セージの実装を決定する機能が無いと。

>>105
>だからCLOSでは書けない。あきらめがつくならあきらめてくれ
わかりました。

>総称関数がクラスの所有物でない時点で、関数名のみで自己説明的であるべきなんだよ
私は先に上げた場面をCLOSで解決できるのか、そして解決できないのであればその対処法を
欲していたので、この命名指針の提示は非常に助かります。

>どちらもインポートしなければ>>93の場合、あなたがどう見ても冗長と
>言ってる方法で明示するしかないし自分にはどう見ても冗長に見えない
冗長といってるのは、メソッドに対してクラスが名前空間を導入するという単一ディス
パッチの言語に対しての話なので、CLの視点では確かに必要十分ですね。
冗長と感じるか否かはただ単に慣れの問題かもしれません。

>>108
なるほど、わかりました。

私の中では解決することができました。長々とすいません。
ありがとうございました。


110 :デフォルトの名無しさん:2009/04/10(金) 01:36:33
あくまでもCLOSでは無理ってとこがポイントだよね。
Lispの世界で広く使われている枠組みの上では無理ってだけで、
その気になればいくらでも新しい枠組みを言語レベルで追加できる余地があるってのは大きい。

111 :デフォルトの名無しさん:2009/04/10(金) 02:00:03
いいか、俺が怒ってんのはな、てめーの心の弱さなんだ!
そりゃいきなりクラスのメソッドって概念がブチ壊されたんだ、衝撃を受けるのは当然だ!
割と適当に作れたアクセサまでインターフェース並に外から丸見えになっちまうんだからな。
オレだってヤバイと思う!

だが!オレたちのチームの他のヤツならッ!
あともうちょっとで喉元に喰いつけるって時に、俺の知ってる〜できないんですね終了とか思考停止したりはしねぇ!
たとえ処理系の見た目がショボかろうと、ライブラリが揃ってなかろうともな!
オメーはマンモーニなんだよ!Java基準でビビったんだ!IDE支援に甘ったれて名前の命名を軽視してんだ!
分かるか?え?俺のいってる事。
Java のせいじゃねぇし、CLOSのほうが優れていると主張するわけでもねー。ただ、「違っている」だけだ。
だが、心の奥のところでオメーには他の思考モデルを認めるのにビビリがあるんだよ!
成長しろ >>109! 成長しなきゃオレたちは「栄光」をつかめねぇ。

112 :デフォルトの名無しさん:2009/04/10(金) 02:15:08
しつこいよ

113 :デフォルトの名無しさん:2009/04/10(金) 08:29:10
みなさんCLOSが使いやすいですか
もっと普通の表記がいいとおもいませんか

114 :デフォルトの名無しさん:2009/04/10(金) 08:54:18
>>113
普通って何だよ?
このスレ的には CLOS が普通なんじゃね?
その質問はナンセンス。

115 :デフォルトの名無しさん:2009/04/10(金) 09:28:18
つか、もし使いにくいならマクロ書きゃいいし…

116 :デフォルトの名無しさん:2009/04/10(金) 10:28:21
cffiがc++に対応してないのは
closの力不足もあるのかなあ

117 :デフォルトの名無しさん:2009/04/10(金) 10:39:02
CLOSのオブジェクト指向に戸惑ってるのかな?
java風のが欲ければ自ら作る必要があるね。グレアムおじさんのon lisp
でもオブジェクト指向言語の作りかたはかいてるので参考にすればいい。

CLOSはjava/C++族のものにくらべると繋りがゆるやかだし、
面倒な処理は少いんだが、だからマルチディスパッチでも
とりあえつあつかえる。言葉は同じオブジェクト指向でも、
考えかたは違いが大きいので、同じ目線で考えないことは
理解する上でも大切かな。

むしろ、CにCLOS風のゆるやかなオブジェクト指向を加えてもらったほう
がありがたい。C-LOS言語とでも名付けてね。

118 :デフォルトの名無しさん:2009/04/10(金) 10:43:33
ちなみに、オブジェクト指向はほとんど使わないよ。使ったところが便利なところ以外はね。
グレアムおじちゃんみたいに忌み嫌うことはないけど、普段から多様すると、
スパゲティメイカーに早変りなので注意が必要かな。

119 :デフォルトの名無しさん:2009/04/10(金) 17:44:53
             /)
           ///)
          /,.=゙''"/
   /     i f ,.r='"-‐'つ____   こまけぇこたぁいいんだよ!!
  /      /   _,.-‐'~/⌒  ⌒\
    /   ,i   ,二ニ⊃( ●). (●)\
   /    ノ    il゙フ::::::⌒(__人__)⌒::::: \
      ,イ「ト、  ,!,!|     |r┬-|     |
     / iトヾヽ_/ィ"\      `ー'´     /

120 :デフォルトの名無しさん:2009/04/10(金) 22:27:25
>>116
単純に dynamic loader がらみの話じゃね?
g++ 一つとってみても abi ころころ変わるから,
他の言語でサポートするとなると結構大変だもん


121 :デフォルトの名無しさん:2009/04/10(金) 23:29:29
common lisp じゃなくて何だが plt scheme は
標準ライブラリにメッセージ渡し式のOOシステムが入っているので
興味のある人は見てみるといいんじゃないだろうか。

122 :デフォルトの名無しさん:2009/04/10(金) 23:49:37
PLTを使うとついつい固有機能をつかってしまい、他のSchemeに移る敷居が高くなる両刃の剣

123 :デフォルトの名無しさん:2009/04/10(金) 23:59:01
Scheme はどれにしたってそんなもの。

124 :デフォルトの名無しさん:2009/04/11(土) 02:06:37
>>109 のおかげでCLOSの理解が深まった。THX。

125 :デフォルトの名無しさん:2009/04/11(土) 08:28:14
>>117
こーゆうの?なんていうか、俺には冗長過ぎて無理だった。
http://www.foldr.org/~michaelw/projects/jclos/

126 :デフォルトの名無しさん:2009/04/11(土) 10:17:49
>>125
冗長だなぁ。。orz

127 :デフォルトの名無しさん:2009/04/11(土) 12:15:05
>>125
そこの参考文献の
Andreas Paepcke,
"User-Level Language Crafting (Introducing the CLOS Metaobject Protocol)"
面白いよね。タイムリーな話題。
;;; 馬鹿syntax sugar系じゃないよ。

128 :デフォルトの名無しさん:2009/04/11(土) 12:42:45
Javaならclass.nameって書けるのに(class-name class)では冗長すぎる
という思考だと、読む以前の問題じゃないのかなと思ったり

129 :デフォルトの名無しさん:2009/04/11(土) 12:52:45
class-name、ださっ!
そんな書き方しねえよ。

130 :デフォルトの名無しさん:2009/04/11(土) 17:50:31
J('ー`)し ごめんね。おかあさんはじめてLISPの規格にオブジェクトシステム入れたから、ごめんね


131 :デフォルトの名無しさん:2009/04/12(日) 17:05:35
>>128
(name-of instance)
じゃないの?


132 :デフォルトの名無しさん:2009/04/12(日) 18:47:16
かあちゃんが謝ってるのはclass-nameが規格で決まってる名前だからだろ…
>>131みたいに、インスタンスのnameプロパティへのアクセサをどう命名するかってユーザーレベルの話とは違くて
クラスの名前を取得する場合の話

133 :デフォルトの名無しさん:2009/04/13(月) 03:27:49
emacsが名前補完してくれるなら
長い名前でもいいんじゃない
mutiple-value-bind
なんて素でうちこまないし

134 :デフォルトの名無しさん:2009/04/13(月) 04:25:13
確かに名前補完してもらった方がいいみたいだなw

135 :デフォルトの名無しさん:2009/04/13(月) 04:58:37
>mutiple-value-bind
なんかイヤな名前だな


136 :デフォルトの名無しさん:2009/04/14(火) 22:27:49
>mutiple-value-bind
むちぷる ばりゅー ばいんど

むしろ何か惹かれるものがあるが・・・

137 :デフォルトの名無しさん:2009/04/15(水) 15:18:31
lambdaple-value-bind
なんてありそうでないか

138 :デフォルトの名無しさん:2009/04/16(木) 08:24:38
むちむち らむだぷるぷる

139 :デフォルトの名無しさん:2009/04/16(木) 12:18:23
むちぷる-ぼにゅう-ぼいん

140 :デフォルトの名無しさん:2009/04/16(木) 13:41:18
ひょっとして画像をよみこませる方法って
cl-pngぐらいしかないのでしょうか


141 :デフォルトの名無しさん:2009/04/19(日) 15:27:49
hunchentootでmultipart-mimeの受け渡しを解説しているサイトとか資料へのポインタを知っていたらご示唆ください


142 :デフォルトの名無しさん:2009/04/21(火) 18:09:29
おまいら clispでgtk使うのはどうしたらいいですか?


143 :デフォルトの名無しさん:2009/04/21(火) 22:36:30
clispでgtk使えばいいと思うよ!

144 :デフォルトの名無しさん:2009/04/23(木) 02:35:30
lispを始めてみようと思い立ったのですが
環境構築の段階でつまづいていますのでご教示下さい。


1) SBCLでwinアプリ作成
 =>最初にDOSプロンプトが立ち上がってしまうのでDOSプロンプトを立ち上げないようにしたい。
 っていうかファイルでかすぎ

2) CLISPでwinアプリ作成
 =>最初にDOSプロンプトが立ち上がってしまうのでDOSプロンプトを立ち上げないようにしたい。

3) ECLでFFIの利用方法が分からない。exeを実行しようとすると以下の様になる。
 errorlog: http://www.4shared.com/file/101112943/cb682248/ecl.html
 SBCL、CLISP、ACLはconflict起こさないし、一般的なライブラリだと思ってるのですが・・・

3-2) ECLでLispbuilderがインストールできない。
 errorlog: http://www.4shared.com/file/101061621/13a90384/lispbuilder.html
 ちなみに"C:/etc/cvs/ecl/site/lispbuilder-sdl/trivial-garbage/trivial-garbage.c"というファイルは存在しないので意味がわかりません。

4) ACL(free)でそもそもexeの作成方法が分からない。


目的はLispでwindowsアプリを作ることです。
とりあえず1〜4のどれかひとつでも打開出来れば後はなんとかなると思うんですが・・・
他の方法でも普通のwindowsアプリを作成する方法があればそれでも構いません。
商用ACLを買うというのは無しの方向で
どなたかお力添えをよろしくお願いいたしますm(_ _)m

145 :デフォルトの名無しさん:2009/04/23(木) 03:51:28
気持ちをくじくようなことをいって悪いけど、Windowsでみためのいいデスクトップ
アプリを作りたいんだったらlisp系言語は向いてないと思うよ。
よいハカーは道具を適材適所で使います。
プログラミングのお勉強がしたいということならまずは*nixのインスコがおすすめ。

146 :デフォルトの名無しさん:2009/04/23(木) 04:02:22
> (setq * 10)
10
> (* 5 *)
50
> (* 5 *)
250

"*"を変数として通常使用することもないと思いますが、
なぜ最初の"(* 5 *)"の後に"*"が50になるのか解説求む。


147 :デフォルトの名無しさん:2009/04/23(木) 04:19:20
>>146
http://www.lispworks.com/documentation/HyperSpec/Body/v__stst_.htm

The variables *, **, and *** are maintained by the Lisp read-eval-print loop to save the values of results
that are printed each time through the loop.

148 :デフォルトの名無しさん:2009/04/23(木) 04:22:26
>>144
> 4) ACL(free)でそもそもexeの作成方法が分からない。

フリーのExpress editionにはその機能はついていません。
スタンドアロン実行ファイルを作成するにはEnterprise editionに付属している
Runtime licenseが必要になります。

> 目的はLispでwindowsアプリを作ることです。

現時点では、フリーの処理系でまともにWinアプリを作成するのは非常に難しいと思います。
私は試したことがないですが、Winアプリの作成をサポートしてるLispWorksやCorman CLを
使うのがいいんじゃないでしょうか。特にCorman CLはWindows専用という珍しい処理系で、
Win32 APIを簡単に扱えることを売りにしているようです。

149 :デフォルトの名無しさん:2009/04/23(木) 09:01:15
コマンドラインから実行したっていいじゃないか
これだって立派なWinアプリなのに…

150 :デフォルトの名無しさん:2009/04/23(木) 09:37:07
windowsってフリーのツールをつかってアプリを作るのに一番向いてないOSだと思うよ。
アプリ作りをするんだったらlinixやFreeBSDじゃまいか?


151 :デフォルトの名無しさん:2009/04/23(木) 10:25:26
OSがある限り、叩けないAPIなどない

152 :デフォルトの名無しさん:2009/04/23(木) 11:22:43
つ 非公開API


153 :デフォルトの名無しさん:2009/04/23(木) 13:16:41
ECLでdllってできた?
GUIは別にするって手も

154 :デフォルトの名無しさん:2009/04/23(木) 13:17:31
GUIのwebアプリならいいのできるのにね

155 :デフォルトの名無しさん:2009/04/23(木) 14:25:51
もっと目的のOS自体を持ってなくてもアプリケーションが作れる
言語が増えれば良いのに....windowsがないからwindows向けの
アプリケーションが作れないな....Cで書くとコンパイルが必要だし
...

156 :デフォルトの名無しさん:2009/04/23(木) 19:34:48
ゴ ゴ ゴ ゴ ゴ ゴ ゴ ゴ   
   /\  /| 
  / /| \/ |(\ /)
 / / |  \|( ゚ー゚) <全力でWindowsを捨てOpenBSDに移行せよ
/  / |   __〃`ヽ 〈_  
  / γ´⌒´-−ヾvーヽ⌒ヽ 
  //⌒  ィ theo`i´  ); `ヽ
 //    ノ^ 、___¥__人  |
/ !  ,,,ノ爻\_ _人 ノr;^ >  )
/ (   <_ \ヘ、,, __,+、__rノ/  /
  ヽ_  \ )ゝ、__,+、_ア〃 /
    ヽ、___ ヽ.=┬─┬〈  ソ、
      〈J .〉、|   |, |ヽ-´
      /""  | sshd |: |
      レ   :|:   | リ
      /   ノ|__| |
↑    /| ,,  ソ  ヽ  )
 \_/ .,ゝ   )  イ ヽ ノ
     y `レl   〈´  リ
     /   ノ   |   | .
     l  /    l;;  |
     〉 〈      〉  |
    /  ::|    (_ヽ \、
   (。mnノ      `ヽnm

157 :デフォルトの名無しさん:2009/04/23(木) 19:44:06
Ubuntuでも結局Javaばっかだけどな

158 :デフォルトの名無しさん:2009/04/23(木) 20:03:52
visualstudioみたいな開発ツールってありますか?

159 :デフォルトの名無しさん:2009/04/23(木) 22:59:15
>>158
slime backend の swank を eclipse で使えるように
したのだったら有る

# エディタが、アホなんで使う気にならないが…


160 :デフォルトの名無しさん:2009/04/23(木) 23:52:38
eclipseで調べてたらcuspってのを発見した

161 :159:2009/04/24(金) 11:53:19
それだ >>160


162 :デフォルトの名無しさん:2009/04/24(金) 12:47:14
OpenGLのバインドがなぜあんなに充実してるのだろう

163 :デフォルトの名無しさん:2009/04/28(火) 11:46:49
http://cyrusharmon.org/static/projects/ch-image/doc/ch-image.xhtml
これを動かしたいのだけど
いろんなものに依存しててasdf-installだけじゃ入らない
依存してるものにリンク切れしてるものがあったり

誰かこれを動かせてる人はいませんか

164 :デフォルトの名無しさん:2009/04/28(火) 19:06:28
cuspは今のeclipseだと動かなくないか?
java製の統合環境もあるよ
ジャバラなんとかって

165 :デフォルトの名無しさん:2009/04/30(木) 00:05:17
cusp普通に動いてるよ。

Windows上の場合は、lispプロジェクトの
コードをsjisにすると良い感じ。

166 :デフォルトの名無しさん:2009/04/30(木) 00:08:02
あ、バージョンはeclipseが3.4.2、Cusp が0.9.390

他言語同様、オンマウスでヒントもでるし、
部分評価もやりほうだいなので、Windows操作系
では最高ランクでないかねぇ。

167 :デフォルトの名無しさん:2009/05/01(金) 01:43:39
>>166
どうもSBCL_HOMEの設定がおかしいんじゃないかと疑ってるんだけど...
環境変数手で入れました?よかったら今の設定教えてもらえないかなあ...
FAQみるとcusp/sbclって書かれてるんだけど、こんなパス存在しないし
お願いします

168 :デフォルトの名無しさん:2009/05/01(金) 03:59:11
http://www.ibm.com/developerworks/jp/opensource/library/os-eclipse-lispcusp/index.html

に書いてあるとおりで「概ね」いけたはず。
(全く同じではないと思うが、大枠はこれでOK)

プラグインインストーラは、新型インストーラではなくて旧型を使うことになるはず。


環境変数は手でいれた覚えは無くて自動で設定されたはずだけど一応。
私がeclipseをインストールする際に、C:\usr\eclipseに入れていること前提です。

「ユーザー変数」の
PATH
 C:\usr\eclipse\eclipse\plugins\sbcl_win32_1.0.20\sbcl\

SBCL_HOME
 C:\usr\eclipse\eclipse\plugins\sbcl_win32_1.0.20\sbcl\


これで動いてたけど、自分は後で、sbcl ver 「1.0.22」 に引き上げてる。
(--script オプションが1.0.22から使えるから)


使う際には、プロジェクトにある.aspファイルを(右クリからとか)でロードする必要がありま。
ALT+Rで選択してる部分のS式の評価ができる。


Lisp用の設定内はデフォのまま。
(よって、Implementations の Lisp Executable とかも設定する必要なし)


このくらいかなぁ〜

169 :デフォルトの名無しさん:2009/05/01(金) 07:23:11
eclipsec.exeでログ見てみたらエラー吐いてた・・・
sbcl、swankの起動はうまくいってるみたいなんだけどな
>>> Found default sbcl folder: C:\eclipse\plugins\jasko.tim.lisp_0.9.390\sbcl
>>> Found default sbcl folder: C:\eclipse\plugins\jasko.tim.lisp_0.9.390\sbcl
start
]This is SBCL 1.0.22, an implementation of ANSI Common Lisp.
]


Swank started at port: 4005.

java.lang.IllegalThreadStateException: process has not exited
at java.lang.ProcessImpl.exitValue(Native Method)
at jasko.tim.lisp.swank.SwankInterface.connect(SwankInterface.java:411)

vistaでuac切った環境なんだけど、なんかまずいのかなあ

170 :デフォルトの名無しさん:2009/05/01(金) 07:33:14
ちなみにバージョンはeclipse、cuspとも>166と同じ
java.version=1.6.0_13

171 :デフォルトの名無しさん:2009/05/01(金) 14:57:38
>>163
いろいろ試してるうちにサイトが消えた
なんでだ

172 :デフォルトの名無しさん:2009/05/08(金) 12:17:18
図書館に行ってきたら、目当ての実践common Lispが貸し出し中だった
ネットでみれるからいいんだけどさ

173 :デフォルトの名無しさん:2009/05/08(金) 12:25:23
買えよ

買われないと絶版になっちゃうだろ

174 :デフォルトの名無しさん:2009/05/08(金) 12:35:31
>>173
英語読むハメになるから買う気まではないなあ
図書を返すついでに借りようかなと思った程度で
とりあえず、うちの図書館ではLisp本の奪い合いがあるみたいだ
頻繁に貸し出し中になる

lispに還元するなら別のなにかでするよ
還元する力もないが

175 :デフォルトの名無しさん:2009/05/08(金) 13:07:33
>>174
pdfならapressのページで登録すれば配布されているんだよ。<PCL
もっとも原著だろうが訳書だろうが、本をもってるほうがなにかと
便利なんだが。

176 :デフォルトの名無しさん:2009/05/08(金) 15:58:21
>>175
本は目にやさしいしね
力尽きたときに寝転がりながらパラパラ読めるのがいい
全体把握もしやすいし、索引がしっかりしていれば検索もしやすい

pdfってうざいなあと思っちゃうんだけど、これは印刷して読んでください用ということなのかな?
emacsでpdfって読めないのかなw
そしたら便利なんだが

slime便利だね
関数補完(一覧)が出るだけでも勉強効率があがって、すごく助かる

177 :デフォルトの名無しさん:2009/05/08(金) 16:51:39
買えって、てっきり翻訳版のことを言ってるのかと思った
あれよくないの?

178 :デフォルトの名無しさん:2009/05/08(金) 17:25:50
PDFも上手く作ってあれば画面で読んでも快適だよ。
目次からジャンプしたり好き勝手に検索したりというのは紙じゃ無理だ。
単にスキャンしただけというのは駄目だけど。
形式は別にPDFじゃなくてもいいんだけど、数式や特殊記号や図が多く
なりがちな専門書は他にいい形式がないんだよね。
本を何冊も持ち運ぶのは大変だけど、データなら何冊あっても楽だ。
もう紙の辞書なんか誰も使ってないのはこの便利さがあるからでしょう。

ただ寝転んだままノートパソコンの画面をみるのはつらいので、
日本でもKindleが使えるようになって欲しい。とりあえず日本語出なくても
いいから。洋書の専門書は重いんだよなあ。

179 :デフォルトの名無しさん:2009/05/08(金) 17:32:29
>目次からジャンプしたり好き勝手に検索したりというのは紙じゃ無理だ。
見覚えのあるテキストをもう一度読みたくてざっとめくるってのができないのが電子書籍の欠点なので僕は紙の媒体を捨てられない


180 :デフォルトの名無しさん:2009/05/08(金) 19:13:52
>>178
>もう紙の辞書なんか誰も使ってないのはこの便利さがあるからでしょう。
羅和とか大漢和とか古語辞典も全部電子化されればいいのになあ
紙媒体しかない辞書が多過ぐる

181 :デフォルトの名無しさん:2009/05/08(金) 20:30:36
電子版は定期的にシリアルナンバーを打ち込まないと使えないとか
他に何を仕込まるか分からないとか、そういうのをやめてくれたらなあ

182 :デフォルトの名無しさん:2009/05/09(土) 12:09:45
数年ぶりに開いた本に陰毛がはさまってることだってあるじゃないか

183 :デフォルトの名無しさん:2009/05/09(土) 14:23:45
apply ってどういうときに使うんですか?
例えばOn Lisp って本に↓のように書かれてたんですが
(apply #'format *query-io* args)
これって
(format *query-io* args)
ってやるのと変わらないですよね?

シンボルの値に関数が入ってるんだったら apply を使う意味はあると思うんです。
例えば関数を 仮引数 fn で受けてるんだったら
(fn args)
は動作しないから
(apply fn args)
ってやると思うんです。

でも最初の例のように 関数は format って分かってるのに apply を使う意味は何なんでしょうか?

184 :デフォルトの名無しさん:2009/05/09(土) 14:47:34
formatをlistに置き換えて考えればわかる
(apply #'list 1 2 '(3 4 5)) => (1 2 3 4 5)
(list 1 2 '(3 4 5)) => (1 2 (3 4 5))

185 :183:2009/05/09(土) 14:51:29
今気づいたのですが同じ本に↓のようにありました。
http://user.ecc.u-tokyo.ac.jp/~tt076524/onlispjhtml/functions.html
> 以下の4個の式はみな同じ働きをする:
> (+ 1 2)
> (apply #'+ '(1 2))
> (apply (symbol-function '+) '(1 2))
> (apply #'(lambda (x y) (+ x y)) '(1 2))

これだと関数が分かってるときに
何でわざわざ apply を使うのかますます分からないです。
気にするなって事なんでしょうか。

186 :デフォルトの名無しさん:2009/05/09(土) 14:58:54
(apply #'+ '(1 2))と(+ 1 2)が同じってことわかってる?
(+ '(1 2))とか(funcall #'+ '(1 2))だとエラーになるよね

187 :183:2009/05/09(土) 15:13:20
>>184
引数をリストで渡せて、その要素が一つ一つ関数への引数として渡せるのが便利だからって事ですよね。
確かにそれだと納得できます。ありがとうございます。

a が (1 2 3) として
(list a) のように関数を先頭にした表記で
実際には (list 1 2 3) と引数を展開して実行できるやり方はないんですか。

188 :デフォルトの名無しさん:2009/05/09(土) 15:39:44
sbclrcをコンパイルする事はできないでしょうか?
sbclrcでシェバング対策やらasdfのインポートやらをしていたら
sbclを立ち上げてから*のプロンプトが出るまでに5秒ぐらいかかるように
なったのですが、皆さんもこれぐらいなのでしょうか?
よろしくおねがいします。
あと、sbclに履歴機能をつける方法とEmacsキーバインドで
操作できる方法が有ればよろしくおねがいします。

189 :デフォルトの名無しさん:2009/05/09(土) 15:46:34
>>188
>あと、sbclに履歴機能をつける方法とEmacsキーバインドで
>操作できる方法が有ればよろしくおねがいします。

Slimeでも何でもいいからEmacsの中で使えばいいのでは。

190 :デフォルトの名無しさん:2009/05/09(土) 15:49:21
>>188
sbclrcの内容を foo.lisp とかに移してからそれをコンパイルして
foo.fasl にし、sbclrc はそれをロードするだけにするとか。

191 :159:2009/05/09(土) 15:50:21
>>188 sb-ext:save-lisp-and-die じゃあかんの?


192 :デフォルトの名無しさん:2009/05/09(土) 18:59:29
>>190
そうしました、しかしsbclに標準でそういった機能がつくと
うれしいですね。(rc-compile)見たいな...

193 :192:2009/05/09(土) 19:09:09
sbclのtoplevel.lispをざっと読んでみましたが
もしかしたら、sbclrc.faslというファイルが有ればそちらを
優先して読み込むと言う設定に改造してコンパイルすれば
良いかもしれませんね。ついでに(rc-compile)関数を組み込みにして
ファイル名を指定しなくても組み込みのsysinit-pathname
という関数を利用して適切なsbclrcファイルを選択してコンパイル
してくれるという関数が作れそうです。

194 :デフォルトの名無しさん:2009/05/09(土) 21:58:39
(defun foo (...) ...)
の中身をみたいなのだけど

clispだと

#'foo リターン

だけで関数のソースみれる

sbclだとできない

sbclでfooのソースが帰ってくる関数ないのでしょうか


195 :デフォルトの名無しさん:2009/05/10(日) 00:15:10
Common LispでOpenGLを使うライブラリみたいなのはありますか?

196 :デフォルトの名無しさん:2009/05/10(日) 00:25:57
http://www.cliki.net/OpenGL%20Bindings

197 :デフォルトの名無しさん:2009/05/10(日) 00:50:16
どうもです。ありがとうございます。

198 :デフォルトの名無しさん:2009/05/10(日) 12:17:48
cmucl の最新スナップショットではutf8が使えるようになったよ。
これで高速なcmuclが日本語でも使える。ただし、32bit x86 のみ

199 :デフォルトの名無しさん:2009/05/10(日) 14:32:19
>>198
最新じゃ無くてもutf8は使えてたぞ
日本語はダメだったけど



200 :デフォルトの名無しさん:2009/05/10(日) 14:59:37
metatilitesの中のon lispのコード入ってるんだね
こういう便利なものってみんなどうやってみつけてるの?

201 :デフォルトの名無しさん:2009/05/10(日) 16:19:01
CLiCCを動かせた人いますでしょうか?
いろいろコードの手直ししないとコンパイル通りませんよね?
最後にlispのコードよむところで
ffiがどうとかいうエラーでてあきらめたのですが

202 :デフォルトの名無しさん:2009/05/10(日) 21:10:48
imaximaってslimeみたいにソース編集しながら
式の評価をいろいろ試せる環境なわけじゃないんだね

203 :デフォルトの名無しさん:2009/05/10(日) 23:53:07
素直に、質問しろよ。

204 :デフォルトの名無しさん:2009/05/11(月) 09:26:05
>>207
inferior-maxima-modeと組み合わせてみればできるんだけど、その方法はあまりかかれてないね。

205 :デフォルトの名無しさん:2009/05/11(月) 11:20:08
>>207 に期待。

206 :デフォルトの名無しさん:2009/05/11(月) 21:18:44
>>207 その発想はなかったわ。

207 :デフォルトの名無しさん:2009/05/11(月) 21:47:36
Maximaとslimeのreplを行き来しつつ、ついでにemacsの中で
皿洗いも済ませてしまいたいのですが、そういうことは可能でしょうか?
アイコンを見ている限りは何とか出来そうな気もするのですが。。。
ご教示いただければ幸いです。

208 :デフォルトの名無しさん:2009/05/11(月) 22:41:23
>>207
インターネット経由で皿洗い機に接続するモードを用意すれば出来そうです。
http://ascii24.com/news/i/topi/article/2000/01/11/606333-000.html

209 :デフォルトの名無しさん:2009/05/12(火) 11:24:27
トースターでnetbsdが動くから、トースターで皿洗いができるということか

210 :デフォルトの名無しさん:2009/05/13(水) 12:31:58
meta-bangの人のコード見てたら

#+test
でテストコード挿入する方法があるんだね

便利そうだけど使い方わかんない

211 :デフォルトの名無しさん:2009/05/13(水) 13:18:08
>>210
この辺から見てみるといいよ。
http://www.lispworks.com/documentation/HyperSpec/Body/24_ab.htm


212 :デフォルトの名無しさん:2009/05/13(水) 20:46:53
clozure cl のWindows版のインストールの仕方を教えてください。
ダウンロードして解凍、CCLのフォルダができたのですが、
その後、どうしたらいいのでしょう?

213 :デフォルトの名無しさん:2009/05/13(水) 23:04:50
>>212
それでインストールできてるんじゃね?
何がわからんのかわからん

214 :デフォルトの名無しさん:2009/05/14(木) 06:12:02
ClozureCL関連の質問が出たのでついでに質問させてください。
Mac OSX 10.5.7環境なのですが、
ClozureCL1.3が出たのでバージョンアップしようと思い(1.2を使ってました。)
サイトからsvnでダウンロードして./dx8664を起動した所
Error: Reader error: No external symbol named "MAKE-EXTERNAL-FOMAT" in package #<Package "CCL"> .
> While executing: CCL::%PARSE-TOKEN, in process Listener(6).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Create and use the internal symbol CCL::MAKE-EXTERNAL-FOMAT
> Type :? for other options.
1>
といきなりエラーが出てしまいます。
これはClozureCLのバグだと思うのですが、どうなのでしょうか?
解決法などありましたらご教授ください。


215 :デフォルトの名無しさん:2009/05/14(木) 18:53:33
split関数がなかったのでネットからダウンロードしたのですが、
こういう関数がパッケージになっているのは何故ですか?
パッケージにせずに単にloadする場合との違いは何でしょうか

216 :デフォルトの名無しさん:2009/05/14(木) 23:11:26
>>215
http://www.komaba.utmc.or.jp/~flatline/onlispjhtml/packages.html


217 :デフォルトの名無しさん:2009/05/15(金) 01:09:13
clozure clっての入れてみたんだがSBCLより速いんだな
フィボナッチの計算で比べてみたら3倍ぐらい速かったわ

218 :デフォルトの名無しさん:2009/05/15(金) 01:12:25
>>217
速い部分もあれば、遅い部分もあるよ。
ベンチマークが公開されてるから、見ると結構面白いと思う。
Allegroとかとの比較もあるよ。

219 :デフォルトの名無しさん:2009/05/15(金) 01:33:51
>>217
ピープホール持ってない sbcl/cmucl に言ってはならないことを…


220 :デフォルトの名無しさん:2009/05/15(金) 03:39:02
>>216
ありがとうございます。
名前が重複しないように、ということですね。

221 :デフォルトの名無しさん:2009/05/15(金) 15:46:48
(setq l (list 0))
(pushnew 0 l) -> l= (0)

(push 0 l) -> l=(0 0)

こんなことおきるんだね
ゼロって怖い

222 :デフォルトの名無しさん:2009/05/15(金) 16:19:42
>>221
よく考えたらあたりまえだった

223 :212:2009/05/15(金) 21:35:51
wx86clを呼び出すと

> Error: value NIL is not of the expected type (OR STRING PATHNAME STREAM).
> While executing: PATHNAME-DIRECTORY, in process Initial(0).
> Type :GO to continue, :POP to abort, :R for a list of available restarts.
> If continued: Skip (possibly crucial) startup function CCL::INIT-LOGICAL-DIRECTORIES.
> Type :? for other options.
> Error: value NIL is not of the expected type CCL::RECURSIVE-LOCK.
> While executing: CCL::RECURSIVE-LOCK-PTR, in process Initial(0).
> Type :POP to abort, :R for a list of available restarts.
> Error: value NIL is not of the expected type CCL::RECURSIVE-LOCK.
> While executing: CCL::RECURSIVE-LOCK-PTR, in process Initial(0).
> Type :POP to abort, :R for a list of available restarts.


224 :デフォルトの名無しさん:2009/05/15(金) 23:16:57
Common LispでCや他の言語のようなキャリッジリターンを使用する方法は
どんな方法が有るのでしょうか?
formatについて調べてみたのですがそういう物は無いようですし。
よろしくおねがいします。

225 :デフォルトの名無しさん:2009/05/15(金) 23:52:16
改行コードのことか?
(format t "hello~%yahoo")

226 :デフォルトの名無しさん:2009/05/16(土) 00:05:07
>>225
そちらではなくて復帰のほうです。
引き続きよろしくおねがいします。

227 :デフォルトの名無しさん:2009/05/16(土) 00:28:26
Cでやるようにキャリッジリターンを出力したいって言うんなら
(princ (code-char 13))
じゃないかな。本当にスクリーンコントロールしたいならcl-ncursesとかを使ったほうがいいと思うけど。

228 :デフォルトの名無しさん:2009/05/16(土) 01:10:25
>>227
ありがとう御座います。
ロード画面のように
棒がのびるエフェクトをつけたかったのでキャリッジリターンを
知りたかったのです。インタプリタだと確認できないので
ファイルに書いて試してみたいと思います。ありがとう御座いました。

229 :デフォルトの名無しさん:2009/05/16(土) 13:00:24
またmximaスレが落ちた
ある意味matlabより便利なのに,思ったより使ってる人すくないのかなあ

230 :デフォルトの名無しさん:2009/05/16(土) 13:36:20
Common Lispでリストの要素を文字列化するには
どのようにすれば良いでしょうか?
'(hello world)というリストの
各要素の長さを別のリストに移したいのでmapcarをつかおうと思うのですが、
legthは文字列でないと受け取ってくれないので、どうしようかと
思っています。
よろしくおねがいします。


231 :デフォルトの名無しさん:2009/05/16(土) 14:09:31
(mapcar 'length (mapcar 'string '(hello world)))

232 :デフォルトの名無しさん:2009/05/16(土) 14:35:32
ありがとう御座います。

233 :デフォルトの名無しさん:2009/05/17(日) 10:30:29
clbuildでmcclimをインストールし、デモもちゃんと動いたのですが、
lispファイルからmcclimをrequireしてもmcclimが見つからないようです。

http://mcclim.cliki.net/Getting%20started%20using%20clbuild
ここを参考にしたのですが、他に何かやることがあるのでしょうか?

234 :デフォルトの名無しさん:2009/05/17(日) 12:09:23
https://www.neuroarena.com/index.html
裏で動いてるのはsbclらしい。

235 :デフォルトの名無しさん:2009/05/17(日) 22:29:13
Common Lispの仕様書が欲しいのですが、
HyperSpecやらCLtL2やら
ANSI X3.226-1994 Information Technology - Programming Language - Common Lisp
やらが出てきてどれが本物なのかがわかりません。
少し聞いた話がANSIが仕様書でCLtL2はその仕様書の編纂途中の様子とかを記録した物で
HyperSpecは辞書のような物だと聞いた事が有ったような....
できれば書籍で販売されているとうれしいです。


236 :デフォルトの名無しさん:2009/05/17(日) 23:15:45
ヤンデレが治ったら本気出すスレ

237 :デフォルトの名無しさん:2009/05/17(日) 23:28:46
そりゃANSIで規格になってるんだから当然書籍で売っている。
ANSI/INCITS 226-1994
http://www.techstreet.com/cgi-bin/detail?product_id=56214
$350.00 USD

238 :デフォルトの名無しさん:2009/05/18(月) 00:27:09
$350.00 って趣味で出すにはちょっと高いかも

239 :デフォルトの名無しさん:2009/05/18(月) 00:35:58
趣味ならANSIからPDFを買って自分で印刷すればいい

240 :デフォルトの名無しさん:2009/05/19(火) 00:14:37
lambdaを打つのがめんどくさかったのでlbdとうって処理できるようにしようと思い
(defmacro lbd (arg body)
`(lambda ,arg ,body))
というのを書いたのですが、replで
(lbd (x) (* x x))と打つと普通にlambdaの文と同じ無名関数として処理されるのですが
((lbd (x) (* x x)) 2)とすると
とたんに
((lbd (x) (* x x)) 2)のcarはlambda式でも関数でもないと帰ってきてしまいます。
これを回避するにはどのようにすれば良いのでしょうか?
よろしくおねがいします。


241 :デフォルトの名無しさん:2009/05/19(火) 01:12:37
>>240
carにlambda式を置くというバッドノウハウは無視して
常にfuncallを使うようにすれば良いと思います

242 :デフォルトの名無しさん:2009/05/19(火) 06:03:18
>>240
はまる人の少ないところだからあまり知られてないけれど。
http://www.lispworks.com/documentation/HyperSpec/Body/03_abab.htm
>If the car of the compound form is not a symbol,
>then that car must be a lambda expression,
>in which case the compound form is a lambda form.
ということで car は symbol じゃないなら lambda で始まるリストじゃなきゃ駄目です。
リーダマクロなら評価の前に式の変形を行うからいけるはずだけど。

243 :233:2009/05/19(火) 14:09:39
>>233です。
なんとかmcclimを読み込んでhello worldを表示することができたのですが、
今度は日本語表示を表示しようとmcclim-truetypeをrequireして実行すると、以下のエラーが出ます。

unhandled ZPB-TTF::BAD-MAGIC:
Bad magic value in font header: #x4F54544F (expected #x00010000 or #x74727565)

見ての通りZPB-TTFというライブラリが何かエラーを起こしているようなのですが、対処法はありますでしょうか?

244 :デフォルトの名無しさん:2009/05/20(水) 15:05:06
OpenTypeFontが扱えないとか。

245 :233:2009/05/23(土) 13:25:12
>>244
返信ありがとうございます。
フォントとなると環境が絡んでくるのですね。

後からになって申し訳ないのですが、MacOSX(leopard)、SBCLを使っていまして、
調べてみたところOSはOpenTypeFontには対応しているようです。

また、代わりにmcclim-freetypeをrequireすると、
unhandled SIMPLE-ERROR: attempt to multiply define ENUM FREETYPE:GLYPH-FORMAT-
というエラーが出て、こちらも駄目でした。

Lispはエラーを検索しても解決策が出てくることが少ないですが、皆さんはどう対処しているのですか?
SBCL含め全て再インストールした方が良いでしょうか・・

246 :デフォルトの名無しさん:2009/05/24(日) 02:13:30
>>245
こちらではほとんど同じ環境ですが、mcclim-freetypeもmcclim-truetypeも
使えているようです。mcclimはclbuildで入れました。mcclim-truetype.asdでのcl-aaへの
依存を取り除いた以外は特に変更を入れていません。


247 :233:2009/05/26(火) 12:08:56
>>246
返信ありがとうございます。
長々と場所を取ってしまいすみません。

今、部分的に再インストールしてみたりして試行錯誤しているのですが、
clbuildでmcclimを入れ、truetypeを使おうとした時に、「cl-paths-ttfがrequireしているzpb-ttfがありません」というエラーは出ませんでしたか?
下のような感じです。

component "zpb-ttf" not found, required by #<SYSTEM "cl-paths-ttf" {12E438F9}>

zpb-ttfを入れるためにclbuildを使おうとしたところ、サポートされていなかったようなのでasdf経由で入れたのですが、これがマズかったのでしょうか?
その他、clbuildだけではインストールされなかったライブラリ等あれば、お教えいただけると幸いです。

248 :246:2009/05/26(火) 18:05:45
>>247
gitは入れていますか?zpb-ttfをclbuildで入れるときにこれが必要だったような気がします。
(macportsで入れました)

249 :デフォルトの名無しさん:2009/05/28(木) 12:23:50
Teepeedee2ってほんとに速いの?

250 :233:2009/05/29(金) 05:58:43
>>248
返信ありがとうございます。
どうにもならないようなので、一度すべて再インストールしてみることにしました。

アンインストールしてから、SBCL、darcs、clbuild、Gitを再インストールし、
clbuildを使ってmcclim、cl-vectors、zpb-ttfを入れましたが、
truetypeは>>243のエラー、freetypeは>>245のエラーがやはり出ます。

これ以上場所を取るのも悪いので、以降は自分で何とかしてみることにします。
また新しく何か分かった時は質問させていただくかもしれないので、その際は宜しくお願いします。

251 :246:2009/05/29(金) 06:25:07
>>250
ほかの話題を邪魔してしまってる訳でもないし、スレチでもないので別にいいのでは?
エラーメッセージから推測するに、特定のフォントのフォーマットが合わないのかも
しれませんね。
http://www.xach.com/lisp/zpb-ttf/#sect-limitations
によると、ユニコードマップがないフォントはだめと書いてあるのでもしかしたら
互換性のないフォントのせいでこけているということもあり得ます。
追加で入れたフォントをいったん外してみたらどうでしょう?

252 :233:2009/05/29(金) 13:23:54
>>251
すみません、恐れ入ります。
ターミナルに表示される処理から察するに「ヒラギノ丸ゴ ProN W4」を参照しており、wikiによればこれがJISのようでしたので、
一旦これを取り除いて再度実行すると「ヒラギノ丸ゴ Pro W4」を参照して同様のエラー、ヒラギノ系をすべて取り除くと、以下のエラーが出ました。
因みに、デフォルト以外のフォントは入れていないです。

debugger invoked on a MCCLIM-TRUETYPE::MISSING-FONT:
Cannot access /Library/Fonts/ヒラギノ丸ゴ Pro W4.otf
Your *truetype-font-path* is currently /usr/share/fonts/truetype/ttf-dejavu/
The following files should exist:
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Mincho.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/Microsoft/MS Gothic.ttf
/Library/Fonts/ヒラギノ丸ゴ Pro W4.otf
/Library/Fonts/Microsoft/Meiryo Bold.ttf
/Library/Fonts/Microsoft/Meiryo Italic.ttf
/Library/Fonts/Microsoft/Meiryo Bold Italic.ttf

/usr/share/fonts/というディレクトリは存在しないのですが、一応ちゃんとライブラリフォルダを参照しているようです。
また、上記のマイクロソフト系のフォントファイルは存在しています。

仰る通り、適当なフォントを読み込めば何とかなる気はするのですが、*truetype-font-path*を変更すれば良いのでしょうか?
しかしながら、そもそも*truetype-font-path*には存在しないディレクトリが与えられていて、それでもライブラリフォルダを参照しているので、どう変更したものか、というところです。

もう少し考えてみます。

253 :246:2009/05/31(日) 22:08:45
>>243のエラーは (require :mcclim-truetype) しただけで出ますか?それともほかの
パッケージをロード/実行した際でしょうか?
こちらで少し試してみたところ、ヒラギノはTTFでなくOTF (open type)なのでzpb-ttf
では読み込めないようです。M+フォントやIPAモナーフォントはOKでした。
もし(require :mcclim-truetype) が通るのであれば、そのあとで
mcclim-truetype::*families/faces*パラメタの方を修正してやればとりあえずごまかせる
かもしれません。>>252のフォントのリストはこのパラメタ (assocリスト)の値のリスト
なので、ヒラギノに対応する項目を適当なフォントのパスに付け替えれば動くかもしれません。
また、*truetype-font-path*の方はこれらの値のうち相対パスになっているものにだけ
使われるので、今は気にしなくて良さそうです。

254 :デフォルトの名無しさん:2009/06/01(月) 19:37:29
on lisp 注文しちまった

255 :デフォルトの名無しさん:2009/06/02(火) 01:52:27
>>254
なんだか注文した事が後悔されているように読めて悲しい。
技術書の良くできた本って読み物としても良くできてるんだよね。
そしてOn lispは読み物としてもおもしろい本だったよ

他のlisp本だと実践CommonLispが楽しかった。

;;; 小生は活字中毒なのもあるかもしれんが


256 :デフォルトの名無しさん:2009/06/02(火) 02:12:19
OnLispは文学

257 :デフォルトの名無しさん:2009/06/02(火) 02:13:22
勃起した

258 :デフォルトの名無しさん:2009/06/02(火) 02:18:11
技術書でかつ訳書といえば、大抵は意味不明な難読日本語に悩まされるのが常だけど、
On Lispは明瞭かつ流暢な日本語で書かれているので、100点を付けてもいいよ

259 :デフォルトの名無しさん:2009/06/02(火) 02:42:29
>>258
それで悩んだのはクヌース本の初版だけだったな、ASCII版は普通によめた

でも算符とか鍵盤とかの訳語は好きだぜw


260 :デフォルトの名無しさん:2009/06/02(火) 16:24:50
算符じゃなくて算譜だね。この訳語が定着しなかったのは残念。

確かに昔の技術書や科学書は硬い言葉使いが多くて読みづらかったけど、
それでも何とかなっちゃう秀才が大学教授になって、やはり硬い文章を
再生産するのかもしれないなあと思ったりして。

261 :デフォルトの名無しさん:2009/06/02(火) 19:36:51
馬鹿みたいに簡単なランレングス圧縮のプログラム
(defun make-run-length-encode (list)
(reduce #'(lambda (first rest)
(cond ((listp (car rest))
(if (eq first (car (car rest)))
(cons (cons first (1+ (cdr (car rest)))) (cdr rest))
(cons first rest)))
(t (if (eq first (car rest))
(cons (cons first 2) (cdr rest))
(cons first rest)))))
list :from-end t :initial-value nil))

これってもっとかっこよくエレガントに書けませんかね?
パターンマッチとか使えるといいんだがなぁ...

262 :デフォルトの名無しさん:2009/06/02(火) 21:30:21
何を持ってカッコいいとするかはさておき。
(defun my-rle (list &optional (res nil))
(if (not list) res
(let* ((head (car list))
(cnt (position head list :test-not #'eq)))
(if (not cnt) (setf cnt (length list)))
(my-rle (nthcdr cnt list)
(append res (list (if (= cnt 1) head (cons head cnt))))))))

263 :233:2009/06/04(木) 00:09:40
>>253
返信ありがとうございます。
requireの下に、
(setf (cdr (nth 8 mcclim-truetype::*families/faces*)) #P"/Library/Fonts/Arial Unicode.ttf")
を追加したところ、ようやく日本語が表示されました。

色々説明不足であったにもかかわらず、何日もに渡ってお教えいただき、本当にありがとうございました。
初めの方に返信を下さった方々もありがとうございます。
Lisperの皆さんの優しさにちょっと感動です。

264 :デフォルトの名無しさん:2009/06/04(木) 05:38:14
今までsbclは末尾再帰を最適化してくれると思っていたのですが、
* (time (fact 45))

Evaluation took:
0.000 seconds of real time
0.000008 seconds of total run time (0.000007 user, 0.000001 system)
100.00% CPU
9,971 processor cycles
0 bytes consed

119622220865480194561963161495657715064383733760000000000
* (time (fact-cps 45))

Evaluation took:
0.000 seconds of real time
0.000010 seconds of total run time (0.000009 user, 0.000001 system)
100.00% CPU
13,546 processor cycles
4,080 bytes consed

119622220865480194561963161495657715064383733760000000000

と末尾再帰がたのfact-cpsの方が若干遅かったのは驚きました。
タイミングの問題ですかね?

265 :デフォルトの名無しさん:2009/06/04(木) 07:01:08
末尾再帰最適化のメリットは主にスペース面で、スピード面の直接の貢献は少ないんじゃないかな。
むしろ末尾再帰のために引数が増えたりすると、スピード面ではデメリットになっているかもしれない。

266 :デフォルトの名無しさん:2009/06/04(木) 10:59:58
>>264
コンパイルした?
>>265
なことはない。

267 :デフォルトの名無しさん:2009/06/04(木) 11:59:07
相互末尾再帰は最適化やってくれるんかな
a->b b->c c->d・・・みたいな

268 :デフォルトの名無しさん:2009/06/04(木) 12:09:26
末尾再帰も相互末尾再帰も末尾呼び出しの最適化だ


269 :デフォルトの名無しさん:2009/06/04(木) 12:36:39
>>267
Clinger の "Proper tail recursion and space efficiency" でも読みなされ。

270 :264:2009/06/04(木) 13:07:42
コンパイルした結果がそのようになりました。
(proclaim '(optimize speed))
を忘れていたので帰ったら試して見ます

271 :デフォルトの名無しさん:2009/06/04(木) 22:00:17
>>266
tail call 用の引数の計算にスタック上のデータが必要だと、
処理が少しだけ面倒くさくならない?
なんかうまいやり方があるのかな。

272 :264:2009/06/05(金) 01:03:18
帰ってきました。(proclaim '(optimize speed))したところ
以下のようにちゃんと末尾再帰版が速くなりました。
* (time (fact 45))

Evaluation took:
0.000 seconds of real time
0.000016 seconds of total run time (0.000009 user, 0.000007 system)
100.00% CPU
9,581 processor cycles
4,096 bytes consed

119622220865480194561963161495657715064383733760000000000
* (time (fact-cps 45))

Evaluation took:
0.000 seconds of real time
0.000008 seconds of total run time (0.000007 user, 0.000001 system)
100.00% CPU
9,412 processor cycles
0 bytes consed

119622220865480194561963161495657715064383733760000000000


273 :デフォルトの名無しさん:2009/06/05(金) 07:34:02
末尾再帰版が早いときもあれば遅いときもある、ってぐらいじゃないかな。
何回かやってみると必要サイクル数は少し変動してるし(ガベコレのタイミングのせい?)。
うちの環境ではどちらが早いとも言えなかった。

274 :デフォルトの名無しさん:2009/06/07(日) 11:14:44
今時Common Lispを始めようなんて、
いったいどういう理由なんですか?

275 :デフォルトの名無しさん:2009/06/07(日) 11:28:03
>>274
どういう理由と文脈で「今時」とか嫌味つけてそういうことを聞くの?
人それぞれだと思うよ。

276 :デフォルトの名無しさん:2009/06/07(日) 11:31:25
sbclをアップデートしたのでasdfを再コンパイルするようにshell scriptを書いて
実行したのですが、
; loading system definition from
; /Users/hoge/.sbcl/systems/cl-containers-documentation.asd into
; #<PACKAGE "ASDF0">
; registering #<SYSTEM CL-CONTAINERS-DOCUMENTATION {127632F9}> as
; CL-CONTAINERS-DOCUMENTATION

debugger invoked on a ASDF::FORMATTED-SYSTEM-DEFINITION-ERROR:
don't recognize component type DOCUDOWN-SOURCE

Type HELP for debugger help, or (SB-EXT:QUIT) to exit from SBCL.

restarts (invokable by number or by possibly-abbreviated name):
0: [ABORT] Exit debugger, returning to top level.

(ASDF::SYSDEF-ERROR "~@<don't recognize component type ~A~@:>")[:EXTERNAL]
とでて一度引っかかります。
cl-containers-documentation.asdのバグなのでしょうか?
よろしくおねがいします。

277 :デフォルトの名無しさん:2009/06/07(日) 16:26:46
安物ルータのhtml形式で書かれた通信ログを定期的に保存したいんですが、どのようにしたらいいんでしょうか?
できれば、タグを取り除いたplain text形式で保存したい。

ヒントでいいので、教えていただきたい。

278 :デフォルトの名無しさん:2009/06/07(日) 17:19:10
つcron, perl

279 :デフォルトの名無しさん:2009/06/07(日) 17:32:26
>>278
cronは、使うと思うんだけど。スクリプトはclで書いてみたいんですが。
とりあえず、簡易版でいいので実装できれば、いいかなと思っています。

280 :デフォルトの名無しさん:2009/06/07(日) 20:11:53
read-line-intoをSBCLで使えるようにできるライブラリはありますか?

281 :デフォルトの名無しさん:2009/06/07(日) 20:31:22
>>280
(setq var (read-line ...))
じゃ, あかんの?


282 :デフォルトの名無しさん:2009/06/07(日) 20:36:15
>>281
データが大量なのでバッファを使った読み込みが好ましいんですが、
read-sequenceでは使い勝手が悪いので・・。

283 :デフォルトの名無しさん:2009/06/07(日) 20:39:46
固定長の、ですね。訂正します

284 :デフォルトの名無しさん:2009/06/07(日) 20:41:21
>>282
ラッパ書けばいいじゃん


285 :デフォルトの名無しさん:2009/06/07(日) 22:40:50
だれか私に最初から教えてください。clisp

286 :デフォルトの名無しさん:2009/06/07(日) 22:47:12
いいよ。どのくらい最初から?

287 :デフォルトの名無しさん:2009/06/07(日) 22:54:10
適当なデータ型のリストを作成して、リストの内容を表示しようとしたら、どう書いたらいい?
超初心者ですりません。Cしか知りません

288 :デフォルトの名無しさん:2009/06/07(日) 23:03:01
>>4に乗っているチュートリアルのどれかかなにかを読むのが一番だと思います。

289 :デフォルトの名無しさん:2009/06/07(日) 23:05:42
なるほど、勉強してきます。

290 :デフォルトの名無しさん:2009/06/07(日) 23:10:54
えらく曖昧だな。こんなんか?
CL-USER> (defstruct st id name) ; 適当なデータ型
st
CL-USER> (defvar *list* (list (make-st :id 0 :name "foo") (make-st :id 1 :name "foo")))
(#S(ST :ID 0 :NAME "foo") #S(ST :ID 1 :NAME "foo"))
CL-USER> (dolist (e *list*)
(print e))

#S(ST :ID 0 :NAME "foo")
#S(ST :ID 1 :NAME "foo")
NIL


291 :デフォルトの名無しさん:2009/06/08(月) 02:24:42
いろいろ読みあさってなんとなくだけどわかってきた気がする。ありがとう。

292 :デフォルトの名無しさん:2009/06/08(月) 06:59:56
>>279
それをlispで書きたい理由がわからないな。lispの練習をしたいならもっといい問題が
他にあるし、この問題を解きたいならもっといいソリューションが他にあるし。
それでもどうしてもcommon lispでやりたいなら
http://ja.doukaku.org/
でも見ればいいと思うよ。

293 :デフォルトの名無しさん:2009/06/08(月) 08:48:04
>>292
> それをlispで書きたい理由がわからないな。lispの練習をしたいならもっといい問題が
> 他にあるし、この問題を解きたいならもっといいソリューションが他にあるし。

問題としては良くないんでしょうか?
練習もかねていますし、将来、この問題をもうちょっと高度にした処理も書きたいと思っています。

> http://ja.doukaku.org/

参考にさせていただきます。
ありがとうございました。

294 :デフォルトの名無しさん:2009/06/11(木) 02:05:42
GNU Common Lisp 2.6.7を使っていて、記述した関数を読み込ませたのですが、
(load "ファイル名.l")と実行しても読み込めません。
コマンド自体は通っているようなのでファイルを置く場所が間違っていると思います。
GNU Common Lisp 2.6.7でいうカレントディレクトリは何処なんですか?

295 :デフォルトの名無しさん:2009/06/12(金) 00:08:44
schme lispスレでこぼしていた者です。
遅くなってすいません。
パッケージのインストール・使い方について教えてください。
このサイトを読んでこいでもいいので、よろしくお願いします。

(load "hoge.lisp")は、わかるんですが、パッケージになるとわけがわかりません。
ライブラリのPATHの通し方もよくわかっていません。
でも、emacs lisp, schemeについては基本的なことはわかっているつもりです。でも、slimeのinfoをまだ読んでいませんが。
http://codepad.org/HNzeTkc4

CLの書籍はピーターうんたらさんの実践common lispの日本語訳のみ所有しています。

296 :デフォルトの名無しさん:2009/06/12(金) 02:13:31
>>295
asdfで検索すると幸せになれる
主要なライブラリならclbuildを使う

297 :デフォルトの名無しさん:2009/06/12(金) 02:38:17
あぁぁぁ (lambda x ...)素敵過ぎ

298 :デフォルトの名無しさん:2009/06/12(金) 05:05:10
>>296
言われたとおり、ググって、みまわりしてきた。asdfは、ちょっとわかった感じだけど。まだ全然わかっていない。
asdfの英文のマニュアルも質素過ぎて、よくわからない。
clbuildは、asdf-installが中途半端に使った状態で使っていいのだろうか。
あとgentooのemerge(package system)を使わないで、clbuildを使って、処理系を入れた方がいいんでしょうか?

299 :295:2009/06/12(金) 07:20:01
あっ、そういうことか。なんかわかってきたかも。

300 :デフォルトの名無しさん:2009/06/12(金) 12:33:34
ubuntuだと
/usr/share/common-lisp
以下にasdfがつっこむようにされてるけど、他はどうなってるの?


301 :デフォルトの名無しさん:2009/06/12(金) 19:26:50
>>294
 *default-pathname-defaults* で確認できんか?GCLは使ってないが。

302 :デフォルトの名無しさん:2009/06/13(土) 19:16:16
lingr-down-p



303 :デフォルトの名無しさん:2009/06/14(日) 01:59:39
(defconstant lingr-down-p t)

304 :デフォルトの名無しさん:2009/06/14(日) 02:06:33
Location: http://gigamonkeys.com/book/files-and-file-io.html
Copyright ← 2003-2005, Peter Seibel

14. Files and File I/O

(let ((in (open "/some/file/name.txt" :if-does-not-exist nil)))
(when in
(format t "~a~%" (read-line in))
(close in)))
を習ったんだけど、一行ずつ足す方法ってどうやるんですか?
string-to-integerみたいな関数はないの?
$ seq 1 100 > /some/file/name.txt

305 :デフォルトの名無しさん:2009/06/14(日) 02:12:39
>>304
あるよ
http://www.lispworks.com/documentation/HyperSpec/Body/f_parse_.htm

306 :デフォルトの名無しさん:2009/06/14(日) 17:46:52
>>305
>一行ずつ足す方法ってどうやるんですか?
304の本題のほうは、どう書くんですか?

307 :デフォルトの名無しさん:2009/06/14(日) 18:31:09
読み進めばわかると思うが、まぁ最終的にはこんな感じになるんじゃね。
(with-open-file (in "name.txt")
  (loop for line = (read-line in nil :eof)
until (eq line :eof)
summing (parse-integer line)))
loop が嫌なら do とか go とか好きな別の制御構文でいいけどさ。

308 :デフォルトの名無しさん:2009/06/14(日) 18:37:30
loop が嫌いな人って do も go も嫌いな気がするんだ

309 :デフォルトの名無しさん:2009/06/14(日) 19:01:31
じゃあ再帰したければ再帰でもいい。
(with-open-file (in "name.txt")
(labels ((rec (stream line num)
(if (eq line :eof)
num
(rec stream (read-line stream nil :eof) (+ (parse-integer line) num)))))
(rec in (read-line in :eof) 0)))
でも、そこまで反復が嫌いならSchemeとか使ったほうがいいかもね。

310 :デフォルトの名無しさん:2009/06/14(日) 19:34:36
>>307 summingなんてあったんか・・loopはまさに変態キングやね!

311 :304:2009/06/14(日) 21:31:40
>>307
章単位でつまみ食いして読んでいます。飛ばした章はとりあえず流し読みだけ。

sbcl and slimeなんだけど、エラーはでないんだけど、答えが出てこないんだが。
loopは、よくわからないなあ。loopの章は読んだんだけどなあ。こういうものだと思って、構文を覚えればいいのかな。
fileもイマイチ書き方がわかっていないし。
>>309
動いた。動いた。
再帰版もサンクスです。

ちょっとしたものを書きながら、file関係の関数にについて理解を深めたいと思います。ありがとうございました。

312 :デフォルトの名無しさん:2009/06/14(日) 21:58:33
それは飛ばし杉というか、手を動かしてないとかじゃないかなぁ。
LISPはじめてなら、本を読むときには、サンプルをREPLに何回か打ちこむくらいはしたほうがいいよ。

313 :デフォルトの名無しさん:2009/06/14(日) 22:33:40
>>312
手を動かしているよ。
飛ばした章に書かれている内容は大雑把だけど、把握していて、読みたい章で飛ばした章の内容が出てきたら、戻るようにしている。
schemeは多少ゴリゴリやったので、Lispはちょっと実験的に章ごとの拾い読み的な勉強法を試している感じ。

304の話は、軽く調べた限りでめぼしいのがなく、初級レベルのレスも過疎っていたので、質問させていただきました。

314 :デフォルトの名無しさん:2009/06/14(日) 22:42:33
string-to-integerといってる時点でSchemerと気がつくべきだったな。私がニブかったね。
PCLを原文で読めるくらいなら、LOOPは書けなくても読めると思うけどやっぱキモいかね。
英語圏の連中が自然に読み書きできる事をめざしていたそうだが・・・まぁSQLもそんな事いってたけど

315 :デフォルトの名無しさん:2009/06/14(日) 22:58:49
COBOL もそんなこと言ってたよな

316 :デフォルトの名無しさん:2009/06/14(日) 23:43:49
>>301
ダメでした
eclipseを使うことを勧められたのでそちらでやってみようと思います
ありがとうございました

317 :デフォルトの名無しさん:2009/06/15(月) 01:56:24
Lispは処理系なり何なりがバラバラすぎる

自由度が重要なのは分かるけど、ただでさえ少ない人口が更に分散してる

318 :デフォルトの名無しさん:2009/06/15(月) 15:49:11
人口多い言語はエラーメッセージ検索するとすぐひっかかるからいいよね

319 :デフォルトの名無しさん:2009/06/15(月) 17:10:53
>人口多い言語はエラーメッセージ検索するとすぐひっかかるからいいよね
すぐググるという思考になって、よくない気もするけどなあ。
軽くググったりもするだろうが、10時間ぐらい悩むのがいいんじゃないだろうか。
いろいろ試行錯誤しても解決しないということは、いいことだし。肥やしになる。

解決するためには英文も読む必要が出てきて、英語の力もつくし。

奥村晴彦のアルゴリズム辞典という本があるけど、Lisp版って需要あるのかな。
ネットでLisp版サンプルコードを晒すだけなんだが。
コメント入れて、読みやすくはするつもりではいる。

320 :デフォルトの名無しさん:2009/06/15(月) 17:18:48
ググらなくてもソースコードの中検索すれば大抵すぐ解決するでしょ

321 :デフォルトの名無しさん:2009/06/15(月) 17:26:20
> 奥村晴彦のアルゴリズム辞典という本があるけど、Lisp版って需要あるのかな。

覚え始めのころにちょっと挑戦してみたことがある。
魔方陣のコードが見た目凄いことになったのでマクロを覚えて書き直したら
他人に分ってもらえなくなったw

322 :デフォルトの名無しさん:2009/06/15(月) 17:34:46
似たものでnumerical recipes in C のlisp版ソースを公開しているものが
あったけど、cをそのまんまcommon lispに直しているだけで、あれはだめだ
ひどいと思ったから、それそうとうのlispらしさを出す努力だけはしてね。

323 :デフォルトの名無しさん:2009/06/15(月) 18:04:41
>>322
> ひどいと思ったから、それそうとうのlispらしさを出す努力だけはしてね。
ハードルをあげるのは好きだなw
lispらしさってlisperが思うlispらしさだろ。そんな10年ぐらい触らないとわからないんじゃないのかな。
とりあえず、糞コードを書いて、数年単位ぐらいで書き直して、精度を上げていけばいいんじゃない?
もちろん、過去の糞コードも残して。

そのくらいのスタンスだったら凡人でも鑑賞に堪えるものができるかなと思っているんだけど。

324 :デフォルトの名無しさん:2009/06/15(月) 18:43:21
>>319の前半に同意なだけに
そんなの自分でやらせたらどうよと思うw

Cのソースからの単純な置き換えでなんとかなってしまうだけに
「lispらしい」例を少しぐらいは示しておくのでないと

325 :デフォルトの名無しさん:2009/06/15(月) 18:44:35
> そんなの
ってのはlispへの書き換えのことね

326 :デフォルトの名無しさん:2009/06/16(火) 12:27:52
>>324
らしさ、というと抽象的です。だけども、多値を使うということは意識できるだろう
マクロを使い過ぎというのも一時のもの(あれはlisperの中二病ですね。)だし、そこ
まではする必要はない。まして、最適化まではもとめないよ。loopかmap系かみたいな
ところも好みがあるので、それもらしさという意味ではどっちでもいいよ。また、
schemeとcommon lispでも違いはあるけども。

>>323
もし10年と考えているならば、それはあまり使ってない人だと思う。和訳も出ている
norvigのcommon lispのスタイルに関して記述したものくらいは読んで理解できると
思うがね。そのコードが見本になるものくらいの気持(決っして、そこまで要求しな
いけど、)はもっておいてほしいだけさ。そこに努力の意味が入っている。

327 :デフォルトの名無しさん:2009/06/16(火) 14:28:54
聞く耳持たないんなら黙って実行しろよ

328 :デフォルトの名無しさん:2009/06/16(火) 20:10:51
ごめん、何がしたいのか分らない。

329 :デフォルトの名無しさん:2009/06/16(火) 20:36:48
CからLispへのトランスレータで解決だね

ていうか奥村さんのその本ちゃんと見たのかなー
ぱっと見で楽そうとか思ってね?

330 :デフォルトの名無しさん:2009/06/18(木) 20:42:32
lispにforがないのはなんで?

331 :デフォルトの名無しさん:2009/06/18(木) 21:22:11
LOOPマクロにある FOR じゃ駄目なのかい…まぁ、煽りなんだろうけど

332 :デフォルトの名無しさん:2009/06/18(木) 21:35:09
>>330
君も知ってる通りLisperは再帰を使うのさ。って言って欲しかった?

333 :デフォルトの名無しさん:2009/06/19(金) 00:10:11
>>330
自分で作れるから

334 :デフォルトの名無しさん:2009/06/19(金) 00:28:40
LISPってC言語より古いんだぜ?
for(初期化付き繰り返し)の原型が最初に出てきた言語って何だろ


335 :デフォルトの名無しさん:2009/06/19(金) 00:43:50
FORTRANじゃないの?

336 :デフォルトの名無しさん:2009/06/19(金) 00:56:30
>331
煽りじゃないです>< ググってみます

>>332-334
りすぱーへの道のりは通そうです><

337 :デフォルトの名無しさん:2009/06/19(金) 01:04:37
本気なの?じゃあ答えるけど、C風のforなら
for (int i=0; i<10; i++) {
...
}
は、次の LOOP 式とほぼ同等
(loop for i from 0 below 10 do
...)
だし、Perlみたいなforを想定してたなら
for my $i (@lst) { ... }
これ
(loop for i in lst do ...)

まぁ、こいつはらforじゃなくてloopだろとか字面の話なら、存在しないってことでもいいけど

338 :デフォルトの名無しさん:2009/06/19(金) 03:36:14
doのことも忘れないであげてね

339 :デフォルトの名無しさん:2009/06/22(月) 13:20:40
初心者です。本で勉強してます。再帰関数をつかった問題を解いていて
自力で解けず、解答のコードを見ても再帰関数がどう動いて値を返してるのか
把握出来ません。例を当てはめても、理解出来ないこともあります。

こういう作業をするときはこのコードを使うと1:1で対応させて
暗記してしまえば良いんでしょうか?それとも、悩みぬいた方がいいんでしょうか?


340 :デフォルトの名無しさん:2009/06/22(月) 13:37:29
コンピュータ上で動かしながら考えたらいいと思うよ
いわゆるprintfデバッグでもいいし、traceもあるし、デバッガも使えるし。

341 :デフォルトの名無しさん:2009/06/22(月) 13:38:34
再帰の理解は基礎の基礎。ちゃんと理解しなさい。
どうしてもダメなら自分では再帰は書かない、あらゆる処理をループで書くと決意する。
理解していないのに暗記で書くなんて最悪だ。


342 :デフォルトの名無しさん:2009/06/22(月) 13:55:44
理解する方がいいのは当たり前だが、暗記がそれほど悪いわけでもないと思うけどなあ
暗記で書くのとライブラリを使うのとは本質的に同じだ

使うライブラリはすべて理解しろと言うわけでもないだろうし

343 :デフォルトの名無しさん:2009/06/22(月) 14:02:51
> 暗記で書くのとライブラリを使うのとは本質的に同じだ

んなわけない。まあ書くのも使うのも自分一人なら同じかも知れないが。

344 :デフォルトの名無しさん:2009/06/22(月) 14:24:02
>>339 そんなあなたに little schemer


345 :デフォルトの名無しさん:2009/06/22(月) 14:47:12
doとかloopの使い方なら暗記で良いけど、
再帰関数はコードが読めないと何をしているかわからなくなるよ。
自分も教えられるほど理解してないけど、基本的には、呼び出し側の関数に呼び出された関数を展開するように考えればいいと思う。

346 :デフォルトの名無しさん:2009/06/22(月) 17:30:51
みなさん、レスどもです。理解するまでやってみます・・・
ネスト入ると、頭が沸騰しちゃいますね・・・


347 :デフォルトの名無しさん:2009/06/22(月) 18:25:49
ネスト?相互再帰とかかな。どんなので沸騰してるんだろ。

348 :デフォルトの名無しさん:2009/06/22(月) 20:23:39
再帰関数hogeの中で、別の再帰関数higeが呼ばれて
higeの引数にhogeが渡されるような関数です。
動きを頭の中で追おうとすると沸騰します。

349 :デフォルトの名無しさん:2009/06/22(月) 23:01:07
>>348
人の関数を追いかけるからだよ
再帰で物がきれいにかけても人の考えまでは見えないからね

自分で再帰関数の定義を自在にできるようになるまでは相互呼び出し系は鬼門だとおもうよ(再帰に限らず関数ポインタ渡すCとかも)


350 :デフォルトの名無しさん:2009/06/22(月) 23:08:21
「処理の流れ」をおっかけようとしているのが原因じゃないかな。(他の言語の経験があると仮定すると、ですが)
「どう動くか」じゃなくて、「何をやっているのか」を読めるようになるといいと思う。
停止条件と、次の呼び出しのときにどう問題を細かくしていくのか、に注目してみよう。

351 :デフォルトの名無しさん:2009/06/23(火) 00:13:06
>>344
little MLerって本もあるらしい。

352 :デフォルトの名無しさん:2009/06/24(水) 18:22:40
>>349
>>350
はい、処理をおっかけてとりあえず理解しようとしていましたが、問題を一つ解くのに
エライ時間かかりましたし。何をやっているかを読むようにしてみます。
>>351(>>344)
余裕が出来たら、読んでみます

353 :351:2009/06/24(水) 21:29:07
>>352
ごめん、MLスレと間違えたんだ。無視してください。

354 :デフォルトの名無しさん:2009/06/24(水) 21:56:05
maximaが静的スコープなのを確認した

355 :デフォルトの名無しさん:2009/06/26(金) 00:03:38
lispboxを触ってみたら、さっそく分からないことが・・・。

Emacs上で以下のリストを書いてC+c C+kでロードしたら
(setf mat_A '(((1 2) (5 4)) ((1 2) (2 3))))

↓こんな警告がでた。
-+ Warnings (1)
`-- MAT_A is neither declared nor bound,
it will be treated as if it were declared SPECIAL.

警告自体はあまり気にしてないんだけど、警告画面が消せない。
警告画面を消してslime-repl画面に移動するにはどうすれば
いいんでしょうか?


356 :デフォルトの名無しさん:2009/06/26(金) 00:45:29
>警告画面を消してslime-repl画面に移動するにはどうすれば
>いいんでしょうか?
Ctrl-H b
でキーバインドが表示される

Slime環境で楽しくLispを学ぶって事ならまずemacsの操作をおぼえなきゃいけない。
おまえさんが未だにemacsのキーバインドになれていないならeclipse+CUPSと言う環境に触れるのもいいかもしれない
また、Slimeにどっぷり浸かるつもりならCtrl-H tでemacs自体の学習が開始されるのでそれを先に済ませるのもいいかもしれない

http://journal.mycom.co.jp/articles/2006/11/09/cusp/index.html



357 :デフォルトの名無しさん:2009/06/26(金) 01:09:06
>>355
lispboxについてはよくわからないし、初心者に毛が生えたレベルだけど、
警告出たら、qなり、Ctrl-x oなりすればいいんじゃないの?


358 :デフォルトの名無しさん:2009/06/26(金) 06:16:54
消したいウィンドウのモードラインで右クリックしたら消える

359 :デフォルトの名無しさん:2009/06/26(金) 08:56:21
slime-compilation-finished 辺りを書き換えるか、
slime-compilation-finished-hook で警告を消せばいいんじゃないの?
slime はかなり読みやすいんだからこれくらい自分で探せよ

360 :デフォルトの名無しさん:2009/06/26(金) 20:09:01
破壊的リスト操作をする関数を非破壊的操作に変えたいんだがなにか良い方法はないかな?
関数でsetqはあまり良くないよね


361 :デフォルトの名無しさん:2009/06/26(金) 20:22:32
破壊的操作がされることを期待して書かれたコードがあったりしない?
大丈夫?

362 :デフォルトの名無しさん:2009/06/26(金) 20:44:06
(defun non-destructive-function (list)
  (destructive-function (copy-list list)))

3秒で書いたのでどうなっても知らない

363 :デフォルトの名無しさん:2009/06/27(土) 10:44:15
>>356
ありがとうございます。
ふだんxyzzyは使うんですが、emacsには慣れてなくて。

>>357-358
ありがとうございます。
それでうまくいきました。

>>359
サーセン、無理ッス。

364 :デフォルトの名無しさん:2009/06/27(土) 16:47:40
cond式で複数の値を返すってできる?


365 :デフォルトの名無しさん:2009/06/27(土) 17:26:20
>>364 values 使うだけちゃうの?

CL-USER> (cond (nil (values nil t))
(t (values t nil)))
T
NIL
CL-USER>


366 :デフォルトの名無しさん:2009/06/28(日) 02:27:58
再帰の利点って何ですか?
最適化でループになるのなら、初めからループで書けば良いと思うのですが

367 :デフォルトの名無しさん:2009/06/28(日) 02:36:56
それは、再帰が何か特別な物に見えている人(再帰を消化しきれていない人)の
発想じゃないかなぁ。
ある動作を素直に表現しようとした時に、それが再帰と呼ばれるものを使用している場合がある。
他のあらゆる技法、概念と同じだよ。

368 :デフォルトの名無しさん:2009/06/28(日) 03:07:08
>>366
再帰にすることで、構造が非常にはっきりする(場合がある)という利点はあるよ
ループのほうが速ければ、別に再帰にする必要なんかない
カルト宗教じゃないんだから

369 :デフォルトの名無しさん:2009/06/28(日) 03:17:10
再帰はイメージできるようになったんだけど、loopの構文ってどうやって覚えればいいの?
loop構文で出てくる単語を覚えられない。
読むのは、いじっていればなんとかわかるんだけどなあ。

370 :デフォルトの名無しさん:2009/06/28(日) 10:32:43
loopは、別に使えなくていいらしい。
構文の重箱の隅をつつくような使い方をすると、
ちゃんと動かなかったりするらしい。
…と初心者の聞きかじり。

371 :デフォルトの名無しさん:2009/06/28(日) 10:49:37
関数の引数に大域変数を渡すと、その大域変数に値を代入してくれる関数って作れる?
rplaca,rplacdを使わないで

372 :デフォルトの名無しさん:2009/06/28(日) 10:53:19
何を言っているのだお前は

373 :デフォルトの名無しさん:2009/06/28(日) 11:22:02
イミフ。そもそも大域変数って何か分かってんのか?

374 :デフォルトの名無しさん:2009/06/28(日) 11:23:03
>>372
(defun settest (x) (setq x 123))
で(settest y)としてもyに値を入れてくれないじゃん
どうすればいいの?

375 :デフォルトの名無しさん:2009/06/28(日) 11:24:23
つ マクロ

376 :デフォルトの名無しさん:2009/06/28(日) 11:33:36
>>374
関数に副作用持たすのはよくない傾向と共通認識があるからそもそも問題にならない
呼び出し側でsetfすればいい話

377 :デフォルトの名無しさん:2009/06/28(日) 11:43:12
(defun settest (x)
(setf (symbol-value x) 123))
(settest 'y)

378 :デフォルトの名無しさん:2009/06/28(日) 11:49:53
>>376
何を言っているのだお前は

379 :デフォルトの名無しさん:2009/06/28(日) 19:07:50
ttp://www.komaba.utmc.or.jp/~flatline/onlispjhtml/macros.html
まぁここでも見とけ

380 :デフォルトの名無しさん:2009/06/29(月) 18:06:35
マクロの質問なのですが.

(defvar *test*
'(("aaa" . "bbb")
("ccc" . "ddd")))

(defmacro build-toolbar (val)
`(progn
,@(loop for i in val collect
`(print ,(car i)))))

こういうマクロを書いて

(progn
(print "aaa")
(print "ccc"))

こうなることを期待したのですが.

(build-toolbar *test*)
とやると,The value *TEST* is not of type LIST.
と出てしまいます.
どうすればよいのでしょうか?.
ちなみに,,@(loop for i in *test* collect...とやるとうまくいきます.

381 :デフォルトの名無しさん:2009/06/29(月) 18:16:16
defvarで*test*が束縛されるのは実行時。
マクロが展開されるのはコンパイル時。

382 :デフォルトの名無しさん:2009/06/29(月) 18:18:31
>>381
それかーっ!
ありがとうございます

383 :380:2009/06/29(月) 18:22:44
うーん,原因はわかったんだけど解決法がわからない...
そもそも定数値をマクロに渡すような手法は間違っているのだろうか...

384 :デフォルトの名無しさん:2009/06/29(月) 18:22:47
> ちなみに,,@(loop for i in *test* collect...とやるとうまくいきます.
てことは展開時に *test* はそのリストに束縛されてんだろう

(build-toolbar *test*)
のマクロ展開時に val が束縛されてるのは symbol *test* であって、その
値である '(("aaa" . "bbb") ...) ではないからじゃね?


385 :デフォルトの名無しさん:2009/06/29(月) 18:28:51
the value *TEST* だからそれだな。

386 :デフォルトの名無しさん:2009/06/29(月) 18:31:18
両方?

387 :デフォルトの名無しさん:2009/06/29(月) 20:23:11
>>380
(defmacro foo (val)
`(mapcan (lambda (x) (print (car x))) ,val))

(defmacro bar (val)
`(eval (cons 'progn (loop for i in ,val collect (list 'print (car i))))))

388 :デフォルトの名無しさん:2009/06/29(月) 23:25:17
>>380
(defvar *test* '(("aaa" . "bbb") ("ccc" . "ddd")))

(defun foo (val)
`(progn ,@(mapcar (lambda (x) `(print ,(car x))) val)))

(defmacro build-toolbar (val)
(let ((m (gensym)))
`(macrolet ((,m () (foo ,val)))
(,m))))

389 :デフォルトの名無しさん:2009/06/30(火) 01:35:37
なんでおまいらそんなにひねくれてるんだ

390 :デフォルトの名無しさん:2009/06/30(火) 07:48:27
>>380に書いてあることを素直にやればいいんだ。

> ちなみに,,@(loop for i in *test* collect...とやるとうまくいきます.

うまくいくマクロを定義するマクロを書く。

391 :デフォルトの名無しさん:2009/06/30(火) 08:35:02
>>381のような誤解もあるので書いておくことにする。
>>380の最後に書いてあるように、大域変数の値に実際にマクロの定義文内で
アクセスすることは可能。でもトップレベルスコープであるマクロの展開中は
大域変数にしかアクセスできないのでふつうは>>387-388のように書く。

392 :デフォルトの名無しさん:2009/06/30(火) 09:39:11
>>391のような誤解もあるので書いておくことにする。

http://www.lispworks.com/documentation/HyperSpec/Body/03_bc.htm
> Normally, the top level forms appearing in a file compiled with
> compile-file are evaluated only when the resulting compiled file is
> loaded, and not when the file is compiled.

コンパイル環境と実行環境が理解できていないんだろうな。

393 :デフォルトの名無しさん:2009/06/30(火) 16:58:27
あたしネカマだけど、マクロ展開とコンパイルを区別できない男の人って・・・

394 :デフォルトの名無しさん:2009/06/30(火) 17:18:39
>>380のdefvarとdefmacroがコンパイルしたい同じファイル内にあるならそうだけど、
そんなこと書いてないじゃん。質問がreplでは通るのにcompile-fileできません><なら
ともかく、>>381の回答は明らかに状況が判ってないだろ。
実際、compile-fileが評価される前に評価されたdefvarの値をマクロ定義内で参照してる
ファイルはコンパイルできる品

395 :デフォルトの名無しさん:2009/06/30(火) 17:22:42
clisp使ってるんですけどプログラムを走らせてる途中でメモリーが足りないというような
メッセージが出たんで一旦止めて

$ clisp -m 768KB program.fas

という具合に -m オプションをつけて走らせたんですけど、同じようにメモリーが足りないという
メッセージがでます。

ps でメモリーの使用量を調べたら30%も使ってませんでした。
これってclispのバグとかでしょうか?


396 :デフォルトの名無しさん:2009/06/30(火) 17:23:06
ネカマの振りして後から必死で言い訳か。まあ頑張れ。

397 :デフォルトの名無しさん:2009/06/30(火) 17:42:20
ついでに、たいていの処理系ではREPLで(defun ...)を評価しただけでコンパイルまで
されちゃうってことも知っておいてね☆

398 :ネカマ:2009/06/30(火) 17:48:06
あたし頑張る!!

トップレベルの式がコンパイルするときには評価されないとか 全 く 関係ないから
>ちなみに,,@(loop for i in *test* collect...とやるとうまくいきます.
と書いてあるんだから、すでに *test* は束縛されてることがあきらかなのに
トップレベルの式はコンパイル時に評価されないとかズレたこと言い出す >>392
は無能すぎ
質問に答える価値なし
たとえ defvar 式がトップレベルに書いてあるファイルをコンパイルしてても
元々束縛されてるものはちゃんと束縛されてますから
小学校からやりなおしてね

>>395
申し訳ないが、今は>>392で遊ぶのに必死で、あなたの質問に答える余裕がないことを
どうか許してもらいたい

399 :デフォルトの名無しさん:2009/06/30(火) 17:56:54
いつから幼稚園になったのこのスレ

400 :デフォルトの名無しさん:2009/06/30(火) 18:10:16
おれはむしろ一度たりとも小学校レベルにたどり着いたことがあるのか知りたい

401 :デフォルトの名無しさん:2009/06/30(火) 18:45:15
良く分からないんだけど、彼は何でこんなにヒートアップしてんの?

402 :デフォルトの名無しさん:2009/07/01(水) 01:35:25
WindowsXP上で、CLisp(2.47) + ActiveTcl(8.4) + ltk(0.91) を使い、
テキストボックスを表示させてキー入力すると固まってしまいます。
(ウィンドウが完全無反応になる)

要はltkを使いたい(CLでGUIアプリを作りたい)のですが、
1.上記組み合わせ(CLisp + ActiveTcl)で解決方法はありますか?
2.ない場合、上記現象がおきない処理系の組み合わせを教えてください
(AllegroCLとかLispWorksといった有償のパッケージは使わない方向で)

403 :デフォルトの名無しさん:2009/07/01(水) 03:26:13
LispWorks personal (無償)+ CAPIはだめなの?


関係ないかもしれんが、もしお商売の一環としてやるならフリーウェアを使うことでよけいに
手間がかかることの潜在的なコストというのも考えるべきだと思う。

404 :デフォルトの名無しさん:2009/07/01(水) 05:11:52
>>403
LispWorksは日本語のリテラルが入ったソースの扱いで困る
ACLは店頭で気軽に買えないので困る(通販でも買えないし)

>>402
文字コード関係の問題だと思った過去スレ4だかに同じような話が出てたよ


405 :402:2009/07/01(水) 20:30:57
過去スレ3にあった文字コード関連の設定を行ってみましたがダメでした。
((defun wish-enable-japanese… や (setf sb-impl::…)といったもの)

CLispの代わりにSBCL(1.0.20)を使ってみると、固まらずに動きました。
Windows版のSBCLは不安定、といった感じの文章をみたことがあるので、
できれば避けたかったのですが。

406 :デフォルトの名無しさん:2009/07/02(木) 01:05:48
>>405
> ((defun wish-enable-japanese… や (setf sb-impl::…)といったもの)
CLISPつかってるのにsb-implを設定とな?

407 :402:2009/07/03(金) 09:09:14
新規に別マシンにインストールしたところ、固まらずに動作しました。
狐につままれた感じです。OSの違いが関係あるのでしょうか???
(以前)Windows XP Home SP1
(今回)Windows XP Pro SP2

一応各モジュールのバージョンを書いておきます。
CLisp 2.47
ActiveTcl 8.4.15.0.280619
ltk 0.91

408 :402:2009/07/03(金) 09:10:03
すいません、ageてしまいました

409 :デフォルトの名無しさん:2009/07/03(金) 14:52:52
>>406は無視か…

410 :デフォルトの名無しさん:2009/07/03(金) 15:03:00
多分難しくて理解できないんだろう

411 :デフォルトの名無しさん:2009/07/08(水) 08:11:01
LISPでネタプログラム作ろうぜ!まずは俺から。
CL-USER(1): ;; Setting (stream-external-format *terminal-io*) to :emacs-mule.
CL-USER(2): (defun ^o^ () '(^o^))
^O^
CL-USER(3): (^o^)
(^O^)
CL-USER(4):

412 :デフォルトの名無しさん:2009/07/14(火) 22:18:57
LispにJavaのURLクラスのようなものはありますか?

Webサイトを読み込みたいのですが

413 :デフォルトの名無しさん:2009/07/14(火) 22:44:58
Drakmaつかえ

414 :デフォルトの名無しさん:2009/07/14(火) 23:03:44
>>413
レスありがとうです。
やっぱりライブラリがあるんですね。

415 :デフォルトの名無しさん:2009/07/15(水) 08:20:33
format関数の値を返さないようにする方法ってある?
値を返さない組み込み関数があるといいんだけど。

416 :デフォルトの名無しさん:2009/07/15(水) 09:01:40
>>415
意味がわかりません
関数は必ず値を返します
elispでいうignore関数みたいなものが欲しいって事?

417 :デフォルトの名無しさん:2009/07/15(水) 09:59:18
(defun my-format (stream format &rest args)
(apply #'format stream format args)
(values))

418 :デフォルトの名無しさん:2009/07/15(水) 10:01:52
;; 書き忘れ: 値を返さないことが嬉しいってどういう場合なのか聞いてみたい

419 :デフォルトの名無しさん:2009/07/17(金) 05:29:14
>>418
こっそり変化かぁ。おもいっきり副作用じゃないの。
たぶん言語的なものじゃなくて、機械語に変換される際の高速化に影響する場合
といったものだと思うよ。それも処理系依存だから、特殊な条件がかさなるよ。

420 :デフォルトの名無しさん:2009/07/17(金) 12:20:20
formatって何が返るんだっけ
まあ関数型言語だし、何も考えずとも最適化されとるよ

421 :デフォルトの名無しさん:2009/07/17(金) 22:03:26
nilとか返すよ
(do ((n 1 (* n 2)))((print (format (< n 1000) "~A" n))))

422 :デフォルトの名無しさん:2009/08/01(土) 21:15:00
yaclmlを使ってcgiを作ろうと思うのですが
(require 'asdf)
(asdf:oos 'asdf:load-op :yaclml)
をしたときに
; loading system definition ...
などと出力されますよね?
この情報?の出力をやめさせたいときは、どうすればいいのでしょうか?

423 :デフォルトの名無しさん:2009/08/03(月) 10:05:30
ch-whoじゃだめなの?

424 :デフォルトの名無しさん:2009/08/04(火) 04:47:53
>>423
cl-whoでやりたいことはすべてできそうです。ありがとうございました。

425 :デフォルトの名無しさん:2009/08/05(水) 03:27:16
>>422
CommonLispでcgiって遅くない?
動作は速いんだけど、起動してロードする時間かかりすぎた気がする。
結局その時はHTTPサーバとかも全部Lispにしたんだけど、なんか速くなる方法あるんですか?
コンパイルしといても時間かかるでしょ?
ECLとかでスタンドアローンにするのかな?

gaucheとかだとCGI速いんだけど、やっぱCLのほうが使いやすいからなー。
実用的速度で使える方法があるなら知りたい。


426 :デフォルトの名無しさん:2009/08/05(水) 03:49:43
>>91
の言っている事って、C++では普通関数アダプタ(bind2stみたいなので)使って解決するもんだよ。

template<typename T, typename F>
void update(T& obj, F func)
{
func(&obj);
}

Foo foo;
Bar bar;

update(foo, mem_fun(&Foo::update));
update(bar, bind2nd(mem_fun(&Bar::update), true));

なんで、CLOSでも同じ事すれば万事解決じゃないかな?
C++はマルチパラダイムなんで、普通にCLOSと同じ事をしているってことだね。


427 :デフォルトの名無しさん:2009/08/05(水) 07:49:38
起動してロードする時間が少ないのはclispってどこかに書いてあった

428 :デフォルトの名無しさん:2009/08/05(水) 08:37:44
>>425
fastCGI 的なことをするしかないと思う。
mod_lisp はあんまりメンテされてないという噂も。

429 :デフォルトの名無しさん:2009/08/05(水) 08:52:38
普通はdumpするから起動したら既にロードし終わってるんじゃないの?

430 :デフォルトの名無しさん:2009/08/05(水) 09:21:26
>>429
その時間がかかるのには違いない罠。

431 :デフォルトの名無しさん:2009/08/05(水) 12:10:39
>>429
なんだかんだで大きなcore読まないとならんでしょ
短いcgiならfastcgi使うのがいい、システムが大きくなりそうならHunchentootとか


432 :高崎佳子:2009/08/11(火) 00:12:02
「実践 Common Lisp」を買いました。
また分からないことがありましたら質問にきます。

433 :デフォルトの名無しさん:2009/08/11(火) 01:04:00
買った報告なんていらねぇよ。
値段や表紙のデザイン程度でもなんか感想くらい書けよ。

434 :デフォルトの名無しさん:2009/08/11(火) 02:52:59
何を実践するのか判らないね

435 :デフォルトの名無しさん:2009/08/11(火) 19:04:24
>>434
http://pds.exblog.jp/pds/1/200509/27/48/d0063748_1623587.jpg

436 :デフォルトの名無しさん:2009/08/17(月) 19:56:21
FreeBSD 7.2-RELEASE-p2 で Allegro CL 8.1 Free Express Edition を使おうとしています。
http://www.franz.com/downloads/clp/downloadから指定されたファイルを落として
http://www.franz.com/support/documentation/8.1/doc/installation.htm#express-inst-linfbsd
に従って解凍し、
% ./newlicense
したのですが、
/libexec/ld-elf.so.1: Shared object "libpthread.so.2" not found, required by "newlicense"
と言われてしまいます。どうしたらインストールを完了できるでしょうか。

437 :デフォルトの名無しさん:2009/08/17(月) 20:19:51
>>436
pthread 入れろ

438 :デフォルトの名無しさん:2009/08/17(月) 21:29:50
>>436
/etc/libmap.conf を作って
libpthread.so.2 libthr.so
とか, 書き込むと幸せになれるかも知れない

だめだったら, あきらめろ


439 :438:2009/08/17(月) 21:37:56
>>436
追加 ${PORT}/misc/compat6x をいれるってのもありかもしれない
それでもだめだったら本当にあきらめるしかないっぽいな


440 :436:2009/08/17(月) 21:48:04
misc/compat*をインストールしたところうまくいきました
ありがとうございます

441 :デフォルトの名無しさん:2009/08/17(月) 23:35:36
> pthread 入れろ
libpthread.* は *BSD には無条件でインストールされるはずなのに
どんな意味で言ってるんだろうか?


442 :デフォルトの名無しさん:2009/08/19(水) 11:26:15
Common LispでSRFI-*の関数が使いたい時、一つ一つ移植してオレオレライブラリに追加してるんだけど、
これって非効率すぎるよね?皆さんどうしてるの?


443 :デフォルトの名無しさん:2009/08/19(水) 18:43:12
そんな時はない

444 :デフォルトの名無しさん:2009/08/19(水) 21:33:30
Windows環境でいちばんお勧めな処理系ってなんでしょ?

445 :デフォルトの名無しさん:2009/08/19(水) 21:55:09
手頃なとこでclispでいいんでないかい

446 :デフォルトの名無しさん:2009/08/19(水) 22:44:49
>>445
ありがとう。やはりclispが妥当ですか。

447 :デフォルトの名無しさん:2009/08/20(木) 04:24:24
Windows上でThread使える環境ってACLしかないのかな?


448 :デフォルトの名無しさん:2009/08/20(木) 06:54:54
どうしてそう思ったのかな?

449 :デフォルトの名無しさん:2009/08/20(木) 09:46:43
clispとsbclはどっちもサポートされてなくてションボリしてるだけなんだ



450 :デフォルトの名無しさん:2009/08/20(木) 10:09:27
>>442
commonlispの上でschemeを動かす
こんなのclerなら簡単だよね?

451 :デフォルトの名無しさん:2009/08/21(金) 00:07:17
>>448
clozuer clが該当したけどXP64bit版でMeadowからslime経由で64bitのCCLを実行すると落ちるんだよね
32bit版のCCLは起動自体拒否されちゃうし
ちなみにThreadさえ使わないならSBCLは凄く使いやすいのだけど、hunchentootで遊ぼうとかするとモウダメポ


ACL店売りしてくんろ >> Franz


452 :デフォルトの名無しさん:2009/08/21(金) 00:26:31
aclってクソ高かったような

453 :デフォルトの名無しさん:2009/08/21(金) 16:23:08
aclダウンロード販売汁

454 :デフォルトの名無しさん:2009/08/21(金) 17:52:20
+, -, incfみたいな既に定義されているオペレーターをオーバーライド
するのってどうやったらよいのでしょう.

vectorクラスを定義しておいて,+オペレーターの引数にvectorクラスが
渡されたら,自分が定義した処理を行うみたいな...

C++でいうoperatorみたなのをやりたいんですが...
教えてください

455 :デフォルトの名無しさん:2009/08/21(金) 18:42:21
>>454
汎関数ならオーバーライド的なことはできるけど、
+はただの関数だから無理では。
C++と違って+はオペレーターじゃないぞ。


456 :デフォルトの名無しさん:2009/08/21(金) 18:43:14
>>455
ちなみに汎関数(これって自分が定義する関数ってことですよね?)
どうするんでしょう??

457 :デフォルトの名無しさん:2009/08/21(金) 19:18:39
> (これって自分が定義する関数ってことですよね?)
厳密には間違い。
ユーザ定義関数なら defun を使うが、
汎関数は defmethod を使って定義する。

汎関数のほうが汎用性が高く、引数の型によって
同じ名前の別の関数を定義可能。


> どうするんでしょう??

(defmethod funcname ((変数名 型名) 変数...)
本体)

みたいな感じ。

http://www.geocities.jp/m_hiroi/clisp/clisp04.html

↑あたりが詳しいかな。

458 :デフォルトの名無しさん:2009/08/21(金) 21:06:03
genericのことかよ
総称関数を普通汎関数なんて言わない

459 :デフォルトの名無しさん:2009/08/21(金) 22:13:20
普通「汎関数」といえば“functional”の訳語だね。

460 :デフォルトの名無しさん:2009/08/21(金) 23:19:25
すまん。用語を間違えた。総称関数のつもりだった。
汎関数てのは無いが汎変数てのがあるね。(defsetf)


461 :デフォルトの名無しさん:2009/08/22(土) 09:53:44
増補改訂版が出るんですな。
http://www.bk1.jp/product/03125439

462 :デフォルトの名無しさん:2009/08/22(土) 10:24:30
>>461
なんでサイエンス社で出さないんだろう。
旧版、持ってるけどお布施で買うか。


因みに未だ読んでない。

463 :デフォルトの名無しさん:2009/08/22(土) 12:24:33
>>462
旧版って20年も前の本ですよ。
随分と寝かしましたな〜w

464 :デフォルトの名無しさん:2009/08/22(土) 13:59:07
>>463
何年か前に古本屋で買ったんですよ。で、積読になってるんです。

465 :デフォルトの名無しさん:2009/08/27(木) 20:53:45
汎関数は、単に関数オブジェクトを引数として取って、数値を返す作用のこと。

ところで、CLに確率過程を取り扱えるライブラリってある?

466 :デフォルトの名無しさん:2009/08/29(土) 22:47:13
funcallってなんのでしょうか

lambda (f x) (funcall f x))
こんなのを定義したときの動きがよくわかりません


467 :デフォルトの名無しさん:2009/08/29(土) 23:22:46
>>466
頭の括弧が抜けてるだけだよね?
それだと、
変数f と 変数x を引数に取って
変数xの値を引数にして
変数fに束縛されている関数を呼び出すlambda
になってる。

その例だと少しややこしいから、以下の関数と見比べて考えてみて欲しい。

(funcall '1+ 1)

(funcall (lambda (x y) (+ x y)) 1 2)

468 :名無しさん@そうだ選挙に行こう:2009/08/30(日) 06:43:07
funcallはなんなのか?といわれれば関数適用applyの特殊形態だろ。

469 :デフォルトの名無しさん:2009/09/15(火) 04:10:49
Lisp Scheme スレは既に墜ちた!残るは我らだけじゃ!


Snow LeopardにしたらSBCLが動かなくなってクマった。Maximaも使えないよ。(*・(エ)・*)

470 :デフォルトの名無しさん:2009/09/15(火) 05:47:39
>>469
> Snow LeopardにしたらSBCLが動かなくなってクマった。Maximaも使えないよ。(*・(エ)・*)

clisp でやりゃいいじゃん。オレはしぶとく Tiger で Maxima 使ってるけど。

471 :デフォルトの名無しさん:2009/09/15(火) 05:57:34
最新版の Sage だと ecl で Maxima を動かしてるみたい。昔は clisp 使ってたはずなんだけど。

472 :デフォルトの名無しさん:2009/09/15(火) 08:59:53
>>466
Scheme出身ですかね?

473 :デフォルトの名無しさん:2009/09/15(火) 10:40:46
>>469
cmucl とかあかんの?

474 :デフォルトの名無しさん:2009/09/15(火) 13:12:08
Snow Leopard上のSBCLですが、とりあえずx86_64のバイナリなら動きますよ。
コンパイルするには若干修正が必要です。

475 :デフォルトの名無しさん:2009/09/15(火) 17:11:18
clispでrequireがasdf:load-opに置き換わるマクロ書いたら不具合おきないのかな
sbclに慣れたので長いタイプが不便

476 :デフォルトの名無しさん:2009/09/15(火) 20:03:57
>>469
Lisp Schemeスレはとうとうパンドラの箱を開けてしまった。
災厄なのか、キボウなのか。

477 :デフォルトの名無しさん:2009/09/15(火) 23:23:05
そろそろID導入してアク禁することも検討しないといけなくなったな。
携帯の場合はアカロムになるから覚悟しとけよ。

478 :デフォルトの名無しさん:2009/09/15(火) 23:34:14
コピペ乙

479 :デフォルトの名無しさん:2009/09/15(火) 23:37:57
>>478
その態度も今の内だな。
世の中甘くないぜ。

480 :デフォルトの名無しさん:2009/09/15(火) 23:45:39
甘いところはとことん甘いのが世の中。

481 :デフォルトの名無しさん:2009/09/15(火) 23:57:31
>>479
勘違いしてるみたいだが、俺は荒らしている人間とは別だぞ。
下らないゴタゴタをこっちのスレまで持って来るなよ。

482 :デフォルトの名無しさん:2009/09/16(水) 12:21:16
XreaにSBCL突っ込んでCGIやろうとしたらbashに制限かかってて断念

お金ケチると駄目だね

483 :デフォルトの名無しさん:2009/09/16(水) 12:30:33
Gauche をクロスコンパイルして xrea に転送して使ってる。
SBCL も使えなくはないんじゃないかなぁ。 面倒だろうけど。

484 :デフォルトの名無しさん:2009/09/16(水) 13:10:50
dreamhostでclispはコンパイルできた
clbuildも途中までは動いた

485 :デフォルトの名無しさん:2009/09/16(水) 13:47:04
http://takogeek.rejec.net/blog/?date=20090809#p04

ここのpython実装はどれくらい使えるんだろう

486 :デフォルトの名無しさん:2009/09/16(水) 17:48:07
windows上で動くlispboxでasdfとcffiが使いたいので
~/.clisprc.lisp

(load "FullPath\\asdf.lisp")
(push "C:\\usr\\share\\common-lisp\\systems" asdf:*central-registry*)
と書いて
C:\\usr\\share\\common-lisp\\systems
にcffi.asdのリンクを置いた

しかし
(asdf:operate 'asdf:load-op :cffi)
とすると

*** - MAKE-PATHNAME: Illegal :TYPE argumen
The following restarts are available:
ABORT :R1 Abort main loop

となってうまく動かない
参考にしたのは
http://mono.kmc.gr.jp/~mak/hiki/?lisp%2Flispbuilder%2Fwindows%2Fclisp

487 :デフォルトの名無しさん:2009/09/19(土) 16:33:36
上のコメントに感化されてさくらサーバを借りてみましたが、どうも上手くいかないです。

sshを繋いで、sbclをインストールするためにsh install.shをすると、
mkdir: /usr/local/share/info: Permission deniedと出るので、
install.shを開いて、変数:DEFAULT_INSTALL_ROOTを権限のある自分のディレクトリに変更、その後もういちどsh install.shとすると、

SBCL has been installed:
binary /home/[*ユーザ名]/bin/sbcl
core and contribs in /home/[*ユーザ名]/lib/sbcl/

と表示されたものの、テストcgiではサーバエラー(500)が出ました。

cgi内容:
#!/home/[*ユーザ名]/bin/sbcl
(format t "Content-Type: text/html~%~%")
(format t "<html><body>~%")
(format t "test~%")
(format t "</body></html>~%")

うーん、何か間違ってますかね?

488 :デフォルトの名無しさん:2009/09/19(土) 16:45:14
>>487
そのCGIの名前は? シェルから起動して動く? 権限の設定は?
~% で CR+LF が出力されているか確認した?

489 :デフォルトの名無しさん:2009/09/19(土) 17:01:39
>>488
ありがとうございます。
名前はtest.cgi、権限は755ですね。改行コードの確認はどうやるのでしょう?
また、シェルで./test.cgiと打ってみると妙なエラーが出ました。

fatal error encountered in SBCL pid 54717:
can't find core file at /usr/local/lib/sbcl//sbcl.core

何故そんなところを・・。
あと、ググっていると関係のありそうなものを見つけたので今試しています。
http://faroffsea.blogspot.com/2007/06/commonlisp4-sbclcgi.html
http://faroffsea.blogspot.com/2009/01/sbcl.html
とりあえずインストールしたバージョンは1.0.23なので一行目の最後に--scriptを追加するも、駄目ですね。

490 :デフォルトの名無しさん:2009/09/19(土) 17:35:45
>>489
改行コードは od に出力を渡して調べる

とりあえず、Apacheがshebangを見てスクリプト起動できるようにしないと
先には進めないと思う
なので % ./test.cgi が動くようになるまでファイト

# Action, SetHandler, ラッパースクリプトを使えばなんとかなるかもしれないけど
# そこまでしても労に見合わない気がする

491 :デフォルトの名無しさん:2009/09/19(土) 17:43:56
windowsでお勧めのCommon Lisp処理系はclispでいいの?
asdf関係がおかしい気もするんだけど

492 :デフォルトの名無しさん:2009/09/19(土) 19:09:17
WindowsでのおすすめはAllegroだけって言っても問題ないような気がする


493 :デフォルトの名無しさん:2009/09/19(土) 20:03:58
>>489
ちょっと試してみたんだ
さくらインターネットのスタンダード FreeBSD 7.1-RELEASE-p6
sbcl-1.0.23-x86-freebsd

% cd sbcl-1.0.23-x86-freebsd
% setenv INSTALL_ROOT /home/USERNAME/sbcl
% sh install.sh
% cd ~/sbcl/bin
%./sbcl
fatal error encountered in SBCL pid *****:
can't find core file at /usr/local/lib/sbcl//sbcl.core

% setenv SBCL_HOME /home/USERNAME/mysbcl/lib/sbcl
% ./sbcl
This is SBCL 1.0.23, an implementation of ANSI Common Lisp.
[...]
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
Bus Error
%

\(^o^)/


494 :デフォルトの名無しさん:2009/09/19(土) 20:09:24
インストール先が/usr/local/*を想定されているから
sbclの起動引数
--core corefilename
を使って$HOME以下にインストールされているはずのcoreファイルの場所指定すればいいだけな気がするが?


495 :デフォルトの名無しさん:2009/09/19(土) 20:11:01
と思ったらSBCL_HOME設定のうえBus Errorかよ
なんかMC68000を直にさわって落としてた頃を思い出したぜ


496 :493:2009/09/19(土) 21:10:37
>>494
SBCL_HOME の代わりに --core を試してみたけど Bus Error
これ以上興味本位で引っ掻き回すのも悪いので成功者の報告を待ちます

497 :デフォルトの名無しさん:2009/09/19(土) 21:21:18
>>496 uname -m の結果は?


498 :493:2009/09/19(土) 22:11:00
>>497
%uname -p
i386

499 :493:2009/09/19(土) 22:11:48
ああごめん・・・
% uname -m
i386

500 :デフォルトの名無しさん:2009/09/20(日) 04:42:30
皆さんありがとうございます

いろいろ試したのですがBus errorですね
改行は問題ないようです
uname -mはi386と出ました

進展があればまた書きます

501 :デフォルトの名無しさん:2009/09/20(日) 04:43:59
↑489です、すみません

502 :デフォルトの名無しさん:2009/09/20(日) 08:50:34
xreaでやってみたけど同じエラーが出たよ

報告だけで助けにはなれないけど頑張って

503 :デフォルトの名無しさん:2009/09/20(日) 11:50:59
>>492
LispWorksじゃ駄目なんか

504 :デフォルトの名無しさん:2009/09/20(日) 12:26:39
>>503
せっかくIDEがあるのにマルチバイト文字(言語に関係なく)の扱いがぞんざいなので結局オペレーションにslime+emacsになっちゃう


505 :デフォルトの名無しさん:2009/09/20(日) 18:18:40
ttp://code.google.com/p/lispbuilder/wiki/WindowsSBCLlispbuilder-sdl
Lisp + SDLで遊んでみたくて↑の記述を真似てインストールしてみましたがうまくいきません。
(asdf:operate 'asdf:load-op :lispbuilder-sdl)実行時に↓のようなエラーが出ます。

; compiling file "G:\\Program Files\\Steel Bank Common Lisp\\1.0.29\\site\\lispbuilder-sdl\\cffi\\library.lisp" (written 02 SEP 2009 03:09:26 AM):
; compiling (IN-PACKAGE #:LISPBUILDER-SDL-CFFI); compilation aborted because of fatal error:
; READ failure in COMPILE-FILE:
; SB-INT:SIMPLE-READER-PACKAGE-ERROR at 485 (line 12, column 51) on #<SB-SYS:FD-STREAM for "file G:\\Program Files\\Steel Bank Common Lisp\\1.0.29\\site\\lispbuilder-sdl\\cffi\\library.lisp" {23FF98D1}>:
; package "SDL-BIN" not found

SDL-BINというパッケージはlispbuilder-0.9.8.tgzとwin32-lispbuilder-sdl-binaries-1.2.12.tgzには入っていないんですか?

環境はWindows XPとSteel Bank Common Lisp 1.0.29です。

506 :デフォルトの名無しさん:2009/09/20(日) 19:27:53
Windowsでうまく行かなくて・・・というのを見るたびに、まずはWindowsを窓から投げ捨て
ましょうと教えたくなってしまうのだが。プログラミングをしたければまず*nixを入れるが吉。


507 :デフォルトの名無しさん:2009/09/20(日) 23:11:32
必ずしもそうとは言えないけど、
CommonLisp はあまり windows で使うことを考えてなさそうな傾向はあると思う。

508 :デフォルトの名無しさん:2009/09/21(月) 05:57:08
>>506
えーと、うまくいかない理由は「Windows環境であるから」なんですか?
それとも「Windows版固有の不具合」なんですか?
わからないのなら無理に返事くれなくてもいいんですよ。
一体何がしたいんですか?「自分はWindowsが嫌いである」という信仰の告白ですか?
私はCommon Lispを使いたいんであって、Linuxを使いたいのではありません。
Linuxは環境構築するのに無駄に時間がかかりすぎますし、日本語環境とエディタが
糞すぎるので絶対に使いたくありません。コーディングはWindowsとxyzyyで万全です。


509 :489:2009/09/21(月) 06:44:35
489ですが、結局駄目でした。CLISPを入れることにします。

ついでに質問なのですが、LispをコンパイルせずCGIで動かす場合、
処理が遅くなるevalやdefmacroは避けた方が良いですか?

それとも皆さんコンパイルして使うのでしょうか。

510 :デフォルトの名無しさん:2009/09/21(月) 06:49:54
>>508
お前が無知なだけね。
今時のlinuxはインスコと同時に日本語も見れるし、日本語も打てるようにできる。
エディタもemacsで世界最強。 てか、ある程度完成されたエディタはどのOSでも使えるから理由になってない。

自分の使ってるエディタのスペリングを間違えるような厨房にレスするべきではないかもしれんな。


511 :デフォルトの名無しさん:2009/09/21(月) 07:16:40
>>510
>今時のlinuxはインスコと同時に日本語も見れるし、日本語も打てるようにできる。

>日本語環境とエディタが糞すぎるので

cannaとかいうimmは入れ直さないと使いものにならないよね

512 :デフォルトの名無しさん:2009/09/21(月) 07:28:54
>>510
> >>508
> お前が無知なだけね。
> 今時のlinuxはインスコと同時に日本語も見れるし、日本語も打てるようにできる。
Windowsと同等以上の手軽さでできるとでも?
日本語環境を構築できる事が必ず保証されてるわけではなく、インストールする環境次第では
日本語を表示できないトラブルが多発しますよね。
余計な手間がかかる上にはるかに見劣りする環境しか無いのがLinuxじゃないですか。

> エディタもemacsで世界最強。 てか、ある程度完成されたエディタはどのOSでも使えるから理由になってない。
emacsは重すぎて話になりませんし、Linuxには買ってきてすぐに使えるWindowsPCほどの便利さがありません。
コーディングの道具とするにはWindows搭載のノートPCとxyzzyを使うのが最適です。

> 自分の使ってるエディタのスペリングを間違えるような厨房にレスするべきではないかもしれんな。
そんな些細な部分しか反撃出来る箇所が見つからなかったんですか?
くだらない人格攻撃をしなければならないような程度の低い人は黙っていて下さい。

513 :506:2009/09/21(月) 07:35:29
>>508
*nixと書いたのがなぜLinuxに限定されたのかわからんが・・
xyzzy使ってるんなら無理にCL入れずにxyzzy lispで遊んでればいいだろ。


SBCL開発者から見たらWin XPなんて「二級市民が口答えすんなや(゚∀゚)アヒャヒャヒャヒャ」って感じでしょ。

514 :デフォルトの名無しさん:2009/09/21(月) 07:50:32
>>512 晒し揚げ♪

515 :デフォルトの名無しさん:2009/09/21(月) 07:52:37
>>513
> *nixと書いたのがなぜLinuxに限定されたのかわからんが・・
えっ?Linux以外に個人ユーザが使う上で現実的な選択肢が他にあるとでもいうんですか?

> xyzzy使ってるんなら無理にCL入れずにxyzzy lispで遊んでればいいだろ。
えっ?LispとSDLを使って遊びたいだけなのに、xyzzyでSDLを使えるようにするところから
自力で書くんですか?そんな非効率的で馬鹿馬鹿しい事なんてしたくありません。

> SBCL開発者から見たらWin XPなんて「二級市民が口答えすんなや(゚∀゚)アヒャヒャヒャヒャ」って感じでしょ。
あー、やっぱり貴方はその程度の人なんですね。煽りたいだけなら黙っててください。

516 :506:2009/09/21(月) 08:23:02
>>515
Windowsの汚濁から永らく離れてるスノッブで悪いが、そのlibrary.lispのコメントアウトされてるところ
を非コメント化してその下の今ある#+windows部分を代わりにコメントアウトしたらどうなるんだ?


517 :デフォルトの名無しさん:2009/09/21(月) 08:39:27
>>514
www ワロタ。
>>512は、知能が低いのに「自分の主張 = 真理」
だと頑固に信じきっているようなリアル馬鹿。
他人にとっては、>>512は偏った主観でしかないのにな。
こういった人間は死んでほしいよ。

518 :デフォルトの名無しさん:2009/09/21(月) 08:59:11
nautilusも糞

519 :デフォルトの名無しさん:2009/09/21(月) 09:05:07
>>512
asdf-installを動かすだけでめちゃくちゃめんどくさい
そんなんだったらvmware上の*nixの方がはるかに簡単

最終的にslimeに落ち着く結果になるのにxyzzyにこだわるのがワケワカメ


520 :デフォルトの名無しさん:2009/09/21(月) 09:06:34
関数型言語スレで有名らしいキチガイがLisperを問い詰めたいといってたが、あいつかなぁ
まぁ誰であれ礼儀をわきまえた初心者には親切にすべきだが、おかしな奴はスルーするのがいいぞ

521 :506:2009/09/21(月) 09:10:44
ドッカン
          ドッカン
                  ☆ゴガギーン
        .______
.        |    |    |
     ∩∩  |     |    |  ∩∩
     | | | |  |    |    |  | | | |  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (  ,,)  |     |    | (・x・ )<オラ!人が教えてやってんだから出てこい>>515!!
   /  つ━━"....ロ|ロ   . | l   |U \___________
 〜(  /   |    |    |⊂_ |〜
   し'∪  └──┴──┘  ∪


522 :デフォルトの名無しさん:2009/09/21(月) 10:43:24
Linuxはサーバとしては良いけれどデスクトップ環境としてはWindowsに大きく
見劣りしているのは確かでしょう。
LinuxをデスクットップOSとして使用している人は少ないし、
Lispを使っている人は更に少ない。
使用者の裾野を広げなければ将来はありませんな〜

523 :デフォルトの名無しさん:2009/09/21(月) 10:46:38
Mac全盛だったころに
DOS+Windowsに対して
同じことを言っている人がいたね

524 :デフォルトの名無しさん:2009/09/21(月) 10:54:22
マク全盛と言ってもシェアは10%以下
Linuxは更にそれ以下

525 :デフォルトの名無しさん:2009/09/21(月) 11:01:51
>>522
Lisp は別に広まって欲しいようなものではない。

526 :デフォルトの名無しさん:2009/09/21(月) 11:05:19
>>522
CommonLisp をデスクトップマシンで使う意義がそれほど無い。
単に適材適所。

527 :デフォルトの名無しさん:2009/09/21(月) 11:08:53
>>526
Windowsからtelnetか何かでLinuxに繋いでLispやってんの?

528 :デフォルトの名無しさん:2009/09/21(月) 11:09:41
Clozure Common Lisp とか ECL とかは Windows でも不都合なく動くよね。
ところで Clozure って clojure と混同しやすくね?

529 :デフォルトの名無しさん:2009/09/21(月) 11:10:17
漏れ明日からVMWareでXPにLinux突っ込んでLisp勉強するんだ
おまいらやさしくしてね

530 :デフォルトの名無しさん:2009/09/21(月) 11:11:54
つか、windowsでclコード書いて、動かしてみても、その後どうすんの?
windowsでclサーバー立ち上げるなんて、実用的じゃないし、
単なる時間の無駄じゃね?
windows上でcl書くなんて、授業の宿題以外で何か使い道あんの?

531 :デフォルトの名無しさん:2009/09/21(月) 12:40:24
>>522
>使用者の裾野を広げなければ将来はありませんな〜

2番目に古いコンピュータ言語に対して面白いことをおっしゃいますな〜
これだけ長きに渡って活発に処理系が開発されている言語もそう無いですぜ

532 :デフォルトの名無しさん:2009/09/21(月) 12:40:39
clサーバって何ですか?

533 :デフォルトの名無しさん:2009/09/21(月) 12:48:04
>>531
それは処理系が開発しやすいのとgccのような決定打が無いからじゃなかろうか?

534 :デフォルトの名無しさん:2009/09/21(月) 12:53:02
>>515
>> *nixと書いたのがなぜLinuxに限定されたのかわからんが・・
>えっ?Linux以外に個人ユーザが使う上で現実的な選択肢が他にあるとでもいうんですか?

Mac OS X 良いよ。Lisp やる環境としてはかなり恵まれてるし、
デスクトップとしても使い易い。宗教的理由で Mac が使えない
とかじゃなければお薦めです。UNIX としても十分使える。

もちろん Linux でも良いけど、正直 Windows はお勧めしません。
使ってる人が少ないから。

535 :デフォルトの名無しさん:2009/09/21(月) 12:55:19
>>533
gcc が決定打だとは思えないんだが…
最近ずいぶん賢くなったけど, 昔の gcc の最適化のおばかさかげんときたら………


536 :デフォルトの名無しさん:2009/09/21(月) 13:23:05
決定打があってはいけない。
多様性が Lisp らしさの根源。

537 :デフォルトの名無しさん:2009/09/21(月) 13:30:11
フリーの処理系だと一時期 CMUCL が決定打だったんじゃないのかな
その時代はよく知らないけど、何となくそういうイメージがある

538 :デフォルトの名無しさん:2009/09/21(月) 14:03:37
Cygwinでも導入したらええがな。重いから俺は使いたくないけど。

539 :デフォルトの名無しさん:2009/09/21(月) 14:12:36
>>536
Common Lispを否定するのか?

540 :デフォルトの名無しさん:2009/09/21(月) 15:10:04
>>539
「標準的なものも必要だけど, もっと多様なものがあってもええんちゃう」
って言ってるんちゃうの?


541 :536:2009/09/21(月) 15:27:15
>>539
実装も含めての話。 >>533 は GCC を例に挙げているけど、「C++99を否定するのか?」なんて言ったらナンセンスだろう?
それと同じ。

542 :デフォルトの名無しさん:2009/09/21(月) 23:46:36
>>516
はい、今さっき帰宅しましたよ。昼間は我慢して下さいね。暇じゃないので。
で、それを試したらコンパイルは通りましたね。
かわりに↓なエラーが出るようになりましたが。

debugger invoked on a SB-KERNEL:SIMPLE-PACKAGE-ERROR:
no symbol named "*DEFAULT-FPSMANAGER*" in "LISPBUILDER-SDL-BASE"

結局Windows版の方にはsdl-binなんて入ってないって事なんですか?

>>519
別に業務に使いたいとか、どっぷり漬かってそれだけ使いたいとかじゃないですから。
ちょっと遊んでみるだけなのにOSから入れるなんて面倒な事したくないですよ。

>>534
すいません、宗教上の理由によりMacは使えません。改行コードとかおかしいし。
日本語環境がおかしくてOSごとすぐ落ちるという印象がまだぬぐえないので。
PowerXCell 8iが載ったMacとかが出たら考えちゃいますが。


543 :デフォルトの名無しさん:2009/09/22(火) 00:00:54
かまってちゃんのキチガイはスルーでお願いします。

544 :デフォルトの名無しさん:2009/09/22(火) 00:27:46
失敗してるからリコンパイルでもすればいいんですかね?


545 :デフォルトの名無しさん:2009/09/22(火) 00:31:42
>>543
えーと、AAを貼りだしたからといって、>>506をかまってちゃんのキチガイ扱いするのは可哀相すぎじゃないですか?
個人的には>>520あたりの脳内仮想敵について語り始めたり、罵倒しはじめる人の方がどうかと思いますよ。


546 :デフォルトの名無しさん:2009/09/22(火) 00:55:53
今のところ可哀相じゃない

547 :デフォルトの名無しさん:2009/09/22(火) 01:47:56
>>542
煽りっぽいけどマジレス

asdf-installが使えないと何かが足りないときに本当にめんどくさい。
どうしてもWindows上でチョロくCommonLispで遊びたいならUnix系のVM作るか
学習版のLispworksを入れてからStarter packで遊ぶ以外どうしようもない

なお学習版のLispworksでSDLなんかで遊ぶとあっという間にconsセル上限に達して再起動だから
結局製品版を買わないと遊べないぞ


548 :デフォルトの名無しさん:2009/09/22(火) 02:44:06
あー、なるほど?
506の人がいった*nixの方がいいというのはそういう事なんですか?
わかりました。そういう事ならVMにLinux入れて試してみます。

549 :デフォルトの名無しさん:2009/09/22(火) 02:51:53
Lisp を触りたいなら、Windows 信仰を捨てれば色々と楽になるよ。

550 :506:2009/09/22(火) 03:48:50
>>542
どうしてもsdl-bin使いたきゃcffi/package.lispで
(:documentation ...)
#+windows(:import-from #:sdl-bin *dll-path*)
(:export ...)
とか突っ込んでおけば通るだろう。
no symbol named "*DEFAULT-FPSMANAGER*" in "LISPBUILDER-SDL-BASE" は、タイミング悪く
http://code.google.com/p/lispbuilder/source/diff?spec=svn1316&r=1316&format=side&path=/trunk/lispbuilder-sdl/sdl/package.lisp
にでも引っ掛けちゃったんじゃねーの。svn先端にすれば通るはず。



・・・ていうか、lispbuilder-sdl のレポジトリ見ても、「DOSの改行コード直す」とかいうリビジョンが
いくつかあったり、おれがマカーかもしれないことについて何か言い残したいことはあるか?

551 :デフォルトの名無しさん:2009/09/22(火) 05:49:46
>>542

> >>534
> すいません、宗教上の理由によりMacは使えません。改行コードとかおかしいし。

物知らずなので教えて欲しいのだが、正しい改行コードというのがあるのだろうか?
ここだけ読むと途方も無い莫迦にしか見えない。Winsdows の改行コードだけが正し
いのです、というのなら *nix も使えないと思うのだけど。なるほど確かに宗教的な
理由だね。


> 日本語環境がおかしくてOSごとすぐ落ちるという印象がまだぬぐえないので。
> PowerXCell 8iが載ったMacとかが出たら考えちゃいますが。

OS ごとおかしくて、直ぐに青い画面になったり、一般保護違反を出すという印象が
まだ拭えな(ry


552 :デフォルトの名無しさん:2009/09/22(火) 06:33:40
正しいのはCR+LF
なぜかというと
タイプライタのCRが行頭でLFが改行だから
Macの様にCRのみだと同じ行に重ねてタイプされる
*NIXの様にLFのみだと
                下の行に移動はするが
                                   行頭にはいかない

553 :デフォルトの名無しさん:2009/09/22(火) 06:58:47
そんなことを言い出したら
backspaceでカーソル前の文字が消える
delete(rubout)でカーソル位置の文字が消える
(カーソルはブロックカーソルを想定)
ってのも、おかしいわけだが


554 :デフォルトの名無しさん:2009/09/22(火) 07:06:48
>>550
ご親切にどうも。マカ―かどうかについては、口にするほどの事は別に何も。

>>552
通信分野、特にインターネットプロトコルの多くはWindows(というかDEC)の改行コード
である CR + LFが正統とみなされてますね。
*nixのLFのみは対応している場合もありますが、旧MacのCRのみは論外ですね。
調べてみたらMacはOS Xで一応まともなOSになったんですね。

あと、宗教的理由とは言いましたが、使ってる人が圧倒的に多いWindows環境になるべく
合わせたいんですよね。Macみたいに人が少なすぎて誰にも遊んでもらえないとか悲しいですし。
まあ、Common Lispを選んだ時点であんまり関係なさそうですけど。

555 :デフォルトの名無しさん:2009/09/22(火) 07:11:06
それは機械式のタイプライターじゃなくてテレタイプのことだし、そんなこと言い出したら長い行のときは
その分いっぱいCR並べないといけないことになるわな。機械式はレバーでがちゃーんとやると行送りと
同時にヘッドも行頭に戻るようになっていた。

556 :デフォルトの名無しさん:2009/09/22(火) 07:12:36
>>555>>552宛ね。

557 :デフォルトの名無しさん:2009/09/22(火) 07:27:52
>>554

> 調べてみたらMacはOS Xで一応まともなOSになったんですね。

Windows はいつになったらまともなOSになるんですか?


cp932 以外の文字コードは認めない。UTF-8 なんて論外だ。
EUC-JP は存在自体が許せない。

とか言い出しそうな人にしか見えない。


改行コードってそもそも低速通信の頃の名残じゃなかったっけ?
そんな話を何処かで聞いたのだけど、何処だったか忘れた。だか
ら正しさとかいう話ではないと思うが、どうなんだろう。


私は使えれば良いや、くらいにしか思ってないから拘りがあんま
りないな。だから Java には驚いた。

558 :デフォルトの名無しさん:2009/09/22(火) 07:50:41
もし宜しければどなたか>>509をお願いしますm(_ _)m

あと、String型としてHTMLタグを書くときに、バックスラッシュを使わずにダブルクオーテーションをそのまま書ける方法はありますか?

559 :デフォルトの名無しさん:2009/09/22(火) 08:02:41
まさか未だに Mac が PowerPC だと思ってるわけ無いよな。改行コードは知らなかった
みたいだけど、Mac OS X が元々 NextStep だって事くらいきっと知ってるんだよな。
この分野で Windows を使ってる人が圧倒的に少ない事にはそろそろ気付いてるだろうし、
SBCL の公式バイナリが Mac 版だけが最新バージョンな事は当然知ってる事だよな。
その上で自分の宗教と現実のどっちが大事かくらいは分かるよな。

560 :デフォルトの名無しさん:2009/09/22(火) 08:15:57
>>557
> 改行コードってそもそも低速通信の頃の名残じゃなかったっけ?
そだよ。50baud 位の通信レートで直接リレーを叩くって時代の名残


561 :デフォルトの名無しさん:2009/09/22(火) 09:24:48
>>558
ほとんどのCL処理系は読み込んだ時点でコンパイルまでしてしまうと思うが・・。(評価時に未束縛
シンボルや不正データ型でエラーが出るのはまた別の話)evalはともかくマクロ自体はパフォーマンスに
関係ないはずだし、ふつうボトルネックはCGI本体以外のところにある。

エスケープせずにダブルクオート使いたかったら自分でリーダマクロ書くしかアルマジロ。

562 :デフォルトの名無しさん:2009/09/22(火) 09:48:18
>>554
>>Macみたいに人が少なすぎて誰にも遊んでもらえないとか悲しいですし。
今ならMac=Unixなんだから、プログラム勉強するならMacの方が圧倒的に楽だけどなぁ。
技術系のセミナーとか行ってみるといい。Macのノートがやたら多いよ。

563 :デフォルトの名無しさん:2009/09/22(火) 10:53:27
>>551
> OS ごとおかしくて、直ぐに青い画面になったり、一般保護違反を出すという印象が
> まだ拭えな(ry

へぇ、今りぬくすユーザはそんなことが書けるんだ。
なんでりぬくすにコントロール+おると+デリートキーコマンドがあったのか知らないのかな。
いや、みゅーる終わらせるのに再起動していたインスト厨だけど(泣


564 :デフォルトの名無しさん:2009/09/22(火) 12:02:45
>いや、みゅーる終わらせるのに再起動していたインスト厨だけど(泣
ものすげぇ自爆じゃねぇか!


565 :デフォルトの名無しさん:2009/09/22(火) 20:56:15
>>559
むしろPowerPCアーキテクチャでなくなった事で、完全に選択肢に入らなくなりましたね。
Mac OSを使う気は全く無いですし、Windowsが動くとはいっても、Macにこだわるべき理由
が全くありませんから。素直に低価格のWindows PCを選びますよ。2〜3万円で必要な
機能は全て揃いますからね。

> SBCL の公式バイナリが Mac 版だけが最新バージョンな事は当然知ってる事だよな。
これは知りませんでしたね。まさかSBCL自体が地雷だったとは思ってもみませんでした。


566 :デフォルトの名無しさん:2009/09/22(火) 21:11:38
>まさかSBCL自体が地雷だったとは

こういう事を平気で言えてしまうのは一体どういう人なんだろうな…
他人事とはいえ、悲しくなるわ

567 :デフォルトの名無しさん:2009/09/22(火) 21:25:23
>>561
ありがとうございます。

スレ荒れてますね・・。

568 :デフォルトの名無しさん:2009/09/22(火) 21:26:57
相手しないほうがいいって意見が正しかったな

569 :デフォルトの名無しさん:2009/09/22(火) 21:52:25
http://jp.techcrunch.com/archives/20090921google-is-searching-for-beautiful-minds-but-so-far-no-m-i-t-students-have-broken-its-code/

Common Lispなら何とかしてくれる

570 :デフォルトの名無しさん:2009/09/22(火) 21:54:25
宗教って怖いね


571 :デフォルトの名無しさん:2009/09/22(火) 22:02:13
>>566
> こういう事を平気で言えてしまうのは一体どういう人なんだろうな…

一神教の人。

572 :デフォルトの名無しさん:2009/09/22(火) 22:21:28
>>569
MIT の学生なら、その問題を解かなくても Google には入れそうな気が、、、
でもこういうのは楽しくて良いね

573 :デフォルトの名無しさん:2009/09/22(火) 22:43:56
(defun test (str)
(setf lst '())
(loop for i from 0 upto 3
do (setf (char str i) #\a)
(push str lst))
(format t "~A ~A ~A ~A~%" (car lst) (cadr lst) (caddr lst) (cadddr lst)))

(test "test")

* aaaa aaaa aaaa aaaa
NIL

何故だ

574 :デフォルトの名無しさん:2009/09/22(火) 22:48:46
>>566

どんな状況でも自分を正当化できる人間って、ある意味羨ましいよな

575 :デフォルトの名無しさん:2009/09/22(火) 22:53:20
やりたい事はこれでいいのかな?
(defun test (str)
(format t "~{~A~^ ~}~%"
(loop
for i from 0 upto 3
for s = (copy-seq str)
do (setf (char s i) #\a)
collect s)))

* (test "test")
aest tast teat tesa
NIL

576 :デフォルトの名無しさん:2009/09/22(火) 22:55:28
一つしかない文字列 str を破壊的に更新しているから。
i:0 str => "aest", lst => ("aest")
i:1 str => "aast", lst => ("aast" "aast")
i:2 str => "aaat", lst => ("aaat" "aaat" "aaat")
i:3 str => "aaaa", lst => ("aaaa" "aaaa" "aaaa" "aaaa")
どうなって欲しいのかがよくわからんが、push時にコピーしときたいならこうかな。
(defun test (str)
(let ((lst nil))
(loop for i from 0 upto 3
do (setf (char str i) #\a)
(push (copy-seq str) lst))
(format t "~A ~A ~A ~A~%" (car lst) (cadr lst) (caddr lst) (cadddr lst))))

577 :デフォルトの名無しさん:2009/09/22(火) 22:57:26
今気付いたけどtoじゃなくてuptoなんてあるんだ。
なんか違いあったりするの?

578 :デフォルトの名無しさん:2009/09/22(火) 23:10:34
数値ベースの for における incremental stepping / decremental stepping の指定につかう。
toとuptoで違いがあるというより組合せだね。byでの増分値指定は正の数のみなので、
from .. to .. [by N] => inc
from .. upto .. [by N] => inc
downfrom .. to .. [by N] => dec
from .. downto .. [by N] => dec
となる。below/aboveとかもあるけど。詳細は CLHS 6.1.2.1.1 The for-as-arithmetic subclause 参照。

579 :デフォルトの名無しさん:2009/09/22(火) 23:15:47
>>575-576
お、ありがとう
charを使ったら思うようにならなくなって困った

580 :デフォルトの名無しさん:2009/09/22(火) 23:37:17
>>566
だってシェア10%未満の環境のみを基準にして、他は対応が大幅に遅れるんでしょう?
なら、地雷そのものじゃないですか。GCLにでも乗り換えますよ。

>>571
つまりMac信者の事ですね。


581 :デフォルトの名無しさん:2009/09/22(火) 23:43:22
やっぱりソースコードが書いてあるとスレがマッタリするな〜

582 :デフォルトの名無しさん:2009/09/22(火) 23:49:23
>>580
シェアが大きいってことは「正しい」ってことでも「優れている」ってことでもないんだ。
ある条件にはよりよくマッチするってことはあるかもしれんがね。

583 :デフォルトの名無しさん:2009/09/23(水) 00:06:52
>>582
その話題を続けたいなら別スレに行こうな。
君が相手を続ける限り終わらないぜ。論理で信仰に挑んでも仕方が無いさ。

584 :デフォルトの名無しさん:2009/09/23(水) 01:28:36
まじキチ…ユダヤが人工地震を起こすぞ

【緊急情報カクサンよろしく】

ついに来ました。

大きい動きです。250nT超えてきました。ほぼ間違いありません。もう一度言います。

友人、知人、親類縁者、あらゆるつながりを駆使して巨大地震がくることを教えて下さい。

四川地震より大きいのが来る可能性があります。
http://g★olde★ntam★atama.b★lo★g84.fc2.c★om/

★★★★★危険度MAX★★★★★
★★★★★★★★★★★★★★★★

★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★
★千葉、静岡、東京、関東で大地震が起きる可能性が非常に高くなっています★★★

★★★★★★★★★★★★★★★★
★★★★★危険度MAX★★★★★

警告!連休中の21、22、23日が危ない!かも2
http://live24.2ch.net/test/read.cgi/eq/1★253494015/
【大気イオン】e-PISCO Part11【また延長】
http://live24.2ch.net/test/read.cgi/eq/1★252991726/

本当に地震が来たら、犯人は特権階級全員だということ2


585 :デフォルトの名無しさん:2009/09/23(水) 04:56:01
>>580
SBCL は *nix 上で動作するものとして開発が始まっていてだなぁ,
Windows 上での動作なんてのは想定外だったんだよ。
# Mac も OS X は, ユーザーランドは立派な *nix だしな………

そうゆう意味では地雷だったわけだ。
# ぶつぶつ文句言うくらいだったら SBCL Windows 版の開発に参加すればいいのに
# 何のためのオープンソースなんだか………


586 :デフォルトの名無しさん:2009/09/23(水) 05:16:22
なぜかやたらSDLにご執心のようだからおおかたHSP畑の人なんじゃね・・と書こうとしたら

    |
  \ _ /
 _ (m) _
    目   ピコーン
  / `′ \
   ∧∧
   (・∀・)
  ノ( )ヽ
   < >

HSP <-> I_ISP <-> LISP 俺って天才?

587 :デフォルトの名無しさん:2009/09/23(水) 10:58:03
>>586
天才。

588 :デフォルトの名無しさん:2009/09/23(水) 13:08:59
>>586
      _人人人人人人人人人人人人人人人_
        >      な、なんだってー!!    <
        ̄^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^Y^ ̄
   ∩___∩              ∩____∩
   | ノ     u ヽ            / u     u └|  ∩____∩
  / # ●   ● |           | ●   ● # .ヽ/  u    └|
  | u   ( _●_)  ミ          彡   (_●_ ) u  |●   ● # ヽ
 彡、   |∪|  、`\        /     |∪|    彡  (_●_) u   |
/ __  ヽノ /´>  )       (  く   ヽ ノ   / u   |∪|    ミ
(___)   / (_/        \_ )      (  く   ヽ ノ     ヽ


589 :デフォルトの名無しさん:2009/09/23(水) 13:14:10
>>586
お前天才だな

590 :デフォルトの名無しさん:2009/09/23(水) 17:49:43
#'って紛らわしくない?
quoteっぽく見えるけど、やってることはquote剥がしに近い


591 :デフォルトの名無しさん:2009/09/23(水) 18:42:50
>>590
俺も、似たようなこと思ってた。

時々、#'がquote の関数版とか言う表現を見かけたんだけど、
「やってることの向きが逆じゃね。」
と、思ってたよ。

ただ、だまってたけど。


592 :デフォルトの名無しさん:2009/09/23(水) 19:13:29
>>590
見た目のはなし?気に入らないなら function でもどーぞ。
>>591
それって見た目の話じゃなくて意味の説明だった?
俺には向きというか全然別物に見えるけど。

593 :デフォルトの名無しさん:2009/09/23(水) 19:42:15
シンボルから関数実体をデリファレンスするんだから、確かにquoteのように
ラップするのとは逆といえば逆かな。

lambdaに対する#'は微妙だけど。

594 :デフォルトの名無しさん:2009/09/23(水) 21:22:02
>>590
quote と function は元々同じ意味で、
function を使うのは処理系に与えるヒントでしかなかった。
emacs lisp では今でもそう。

Common Lisp では (たぶん lexical closure のせいで)
quote と function は違うものになった。

595 :デフォルトの名無しさん:2009/09/23(水) 21:23:14
ANSI Common Lispのlambda式は謎すぐる。

全体として関数名とみなされ、#'で対応する関数が得られ、
それとは別にlambdaマクロで関数が得られる?

もうschemeに帰りたい…


596 :デフォルトの名無しさん:2009/09/23(水) 21:46:35
あんまり関係ないオペレータ間に関係を見出すのはどうかと思うなぁ。
(QUOTE object) => オブジェクトそのものを返す
(FUNCTION name) => カレントレキシカル環境の指定された名前の関数を返す。みつかんなかったらグローバル環境から探す。
だろ?>>593のいうようなデリファレンスはSYMBOL-FUNCTIONを想像するなぁ。

597 :デフォルトの名無しさん:2009/09/23(水) 21:49:02
590です。

>>594
ありがとう。
"lisp quote function"でぐぐって、関係ありそうな日本語の文書として

ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/p/funarg/funarg.html
ttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/comparison.html
ttp://tips.lisp-users.org/common-lisp/index.cgi?QUOTE%E3%81%A8FUNCTION%E3%82%92%E4%BD%BF%E3%81%84%E5%88%86%E3%81%91%E3%82%8B

がひっかかった。これから読む。


598 :デフォルトの名無しさん:2009/09/23(水) 21:54:46
>>595
俺もお前が謎すぐるので、もうSchemeに帰ってほしい…

599 :デフォルトの名無しさん:2009/09/24(木) 01:12:53
普通のやつらの上を行け
ttp://www.youtube.com/watch?v=xO7KfTu7VmU

600 :デフォルトの名無しさん:2009/09/24(木) 09:25:01
>>594
その辺はemacs lispの方がわかり易いな。
ただemacs lispはCLの人の為に #' は残してくれてるよね。
中では多分同等にあつかってるとおもう。

(defun foo (fn) (funcall fn))
=> foo
(foo '(lambda nil 1))
=> 1 (#o1, #x1)
(foo (lambda nil 1))
=> 1 (#o1, #x1)
(foo #'(lambda nil 1))
=> 1 (#o1, #x1)
(foo (function (lambda nil 1)))
=> 1 (#o1, #x1)

#'1
=> 1 (#o1, #x1)

601 :デフォルトの名無しさん:2009/09/24(木) 10:15:30
> #'1
> => 1 (#o1, #x1)

こいつはくせえ。ゲロ以下のにおいがプンプンするぜ。

CLでもlambdaマクロからは同じようなにおいがするけどね。


602 :デフォルトの名無しさん:2009/09/24(木) 10:21:50
>>601
> こいつはくせえ。ゲロ以下のにおいがプンプンするぜ。

ちゃんと>>600を読めよ。 emacs lisp では
' == #'
なんだよ。

603 :デフォルトの名無しさん:2009/09/24(木) 12:39:45
> (defun foo (f) f)
FOO
> (defun fuga () (format t "test"))
FUGA
> (foo (fuga))
test
NIL

これって問題ないんですか?
funcallやapplyは不要??

604 :デフォルトの名無しさん:2009/09/24(木) 12:56:46
(foo (fuga))と(foo fuga)を混同してない?

605 :デフォルトの名無しさん:2009/09/24(木) 13:01:03
>>604
すみません、どう違うんです??

606 :デフォルトの名無しさん:2009/09/24(木) 14:27:54
((lambda (x) x) (format t "test"))

607 :デフォルトの名無しさん:2009/09/24(木) 14:34:39
どう違うかって、試してみればいいでしょ

608 :デフォルトの名無しさん:2009/09/24(木) 14:58:15
> (foo fuga)

*** - SYSTEM::READ-EVAL-PRINT: variable FUGA has no value

変数の名前空間と関数の名前空間が違うということですね。
ということは(foo (fuga))ではfugaは代入されて実行されたわけではない?
引数にした関数をなかで実行したい場合はどうすればいいんですか??

609 :デフォルトの名無しさん:2009/09/24(木) 15:07:04
>>608
何を言ってるんだお前は

610 :デフォルトの名無しさん:2009/09/24(木) 15:10:06
ごめんなさい…

611 :デフォルトの名無しさん:2009/09/24(木) 15:33:59
>>608
各 symbol には関数以外の値と関数の値(ポインターかコードオブジェクト)を
保持するスロットがある。名前空間が違うわけではない。


612 :デフォルトの名無しさん:2009/09/24(木) 15:53:02
>>608
呼び出し元で function(#')またはquote(')、
呼び出し先でapplyまたはfuncallを使う。

>>611
> 各 symbol には関数以外の値と関数の値(ポインターかコードオブジェクト)を
> 保持するスロットがある。
それが名前空間が違うということなんじゃないの?


613 :デフォルトの名無しさん:2009/09/24(木) 16:10:27
>>505
ここの方法を改変したらいけた

http://mono.kmc.gr.jp/~mak/hiki/?lisp%2Flispbuilder%2Fwindows%2Fsbcl
私は
Program Files
じゃなくて
c:\sbclに入れた

614 :デフォルトの名無しさん:2009/09/24(木) 16:28:31
> 呼び出し元で function(#')またはquote(')、

たいていはどっちでもいいのだが
前者は関数定義そのもの、後者は関数名による呼び出しなので
別のものが呼び出される場合がある

615 :デフォルトの名無しさん:2009/09/24(木) 16:38:35
> (defun fuga () (format t "test"))
fuga

> (setq fuga1 #'fuga fuga2 'fuga)
fuga

> (funcall fuga1)
test
nil

> (funcall fuga2)
test
nil

> (defun fuga () (format nil "test"))
fuga

> (funcall fuga1)
test
nil

> (funcall fuga2)
"test"



616 :デフォルトの名無しさん:2009/09/24(木) 17:24:11
windowsで.sbclrcってファイル作れないよね
dot.sbclrcとかで代用できないの?

617 :デフォルトの名無しさん:2009/09/24(木) 17:36:37
%HOME% 設定してるうちの環境ではふつーに読んでくれるみたい
;;; SBCL 1.0.29 on win2003


618 :デフォルトの名無しさん:2009/09/24(木) 19:41:52
>>616
コマンドラインからつくれなかったっけ?

619 :デフォルトの名無しさん:2009/09/24(木) 20:00:00
>>618 nt-emacs あたりで普通に作れなかったけ?


620 :デフォルトの名無しさん:2009/09/24(木) 20:42:09
>>616
適当なファイル名で作ってから ren コマンドでリネームが常套手段

621 :デフォルトの名無しさん:2009/09/25(金) 19:40:22
(human nanasino gonbe
 ((00-0000-0000 keitai)
  (11-1111-1111 ie))
(("toukyouto chiyodaku nagatacho 1-1-1" jitaku)))
みたいなデータ構造を扱いたいと思っています
これってプロパティリストでは扱えないと思うんですが
アクセッサやフォーマットチェッカなんかを作ってくれるライブラリとかご存じないでしょうか

622 :デフォルトの名無しさん:2009/09/25(金) 21:18:17
ちょっと良くわからないな。
> これってプロパティリストでは扱えないと思うんですが
内容によっちゃぁ、
(:type human :name (nanasino gonbe) :keitai 00-0000-0000 :ie 11-1111-1111 :jitaku "toukyouto ...")
とう形式で覚えて、入出力時に任意の表現でもいいんじゃないか。
> アクセッサやフォーマットチェッカなんかを作ってくれるライブラリとかご存じないでしょうか
どんなアクセサが欲しいのか?フォーマットチェッカはどんなデータをどうエラーにしたいの?


623 :デフォルトの名無しさん:2009/09/26(土) 02:45:46
sbclよりECLの方が速いんだろうか

624 :デフォルトの名無しさん:2009/09/26(土) 09:09:21
どうしてそう思ったのかスゲー気になるけど基本的にsbclの方が圧倒的に速いよ。

625 :デフォルトの名無しさん:2009/09/27(日) 19:36:46
kwsk

626 :デフォルトの名無しさん:2009/09/29(火) 20:49:56
天才が居ると聞いてやってきました

627 :デフォルトの名無しさん:2009/09/29(火) 21:29:38
>>626
どこで聞いたの?

628 :デフォルトの名無しさん:2009/09/29(火) 23:35:13
天気予報を見ていると「満潮」「干潮」の時刻まで画面に表示している。
干潮 (かんちょう) というと当然ながら浣腸を連想するわけだ。
肛門にぶっ挿して中に出すあれだ。
では満潮 (まんちょう) というと、もちろん差し込む場所は…


629 :デフォルトの名無しさん:2009/09/29(火) 23:36:34
誤爆しました。 すまんこってす。


630 :デフォルトの名無しさん:2009/09/30(水) 10:27:37
天才が居ると聞いてやってきました

631 :デフォルトの名無しさん:2009/09/30(水) 10:52:14
http://find.2ch.net/?STR=%B2%AC%C5%C4%B8%AD%BC%A3

632 :デフォルトの名無しさん:2009/09/30(水) 10:56:53
>629
Lisperは変態の集まりだと思われかねないので
そのような誤爆には気を付けてくれた給へw。

633 :デフォルトの名無しさん:2009/09/30(水) 10:59:46
>>632
> Lisperは変態の集まりだと思われかねないので

え、違うの?

634 :デフォルトの名無しさん:2009/09/30(水) 11:00:12
マルチコピペ

635 :デフォルトの名無しさん:2009/09/30(水) 11:02:16
ここまでテンプレってところですか

636 :デフォルトの名無しさん:2009/09/30(水) 15:51:52
                _, -―‐―- 、
               /斗──= 、―-、\
              /'´>‐‐──-\  ヽ`ニヽ
             ////   l     ヽ  ∨ヽ\
           __〃 l   |     {  ヽ    |    V-、/
         く // │l ト、ノ   ヽ  \‐-!  |  トく \
        //| l l |l┼匕_\|\ \ {_\|  j  l{ ヽ/}
        </レV|ヽ小 ヾ心  \l〃⌒|   八ーW
         // /| \ヽハ弋ヒ}   ,  ::::::│/ / 从リ
          / /|__l |  rfV \ :::  t=ー ァ  // / `>、_       すまんコ!
         ∨ {ヘハヽト:!ハ\.> _`ー_,.イl/∨l / /\-、___
.             ヽ从| | lヘn\ゝト、 7  :|八 '/  /   ノ`'|lllレ│
                  | l人j {ヽミ :|二ニ二|  / /       |l斗' |\
                  { ヽ `}\ ∨ ,'  j '/    ォ<__/__ヽ、j _}
                /ム , /}小\∨ r//     / )><_|寸|/ /
            /_|l`三彡ハ \∨l/       //「「|    ̄ _/
           {/ \二イ  `ーォ≧≦二ニ ≠  \>‐‐=彡'
           |     /   / / / ハヽ  │   `rー‐'´
           l     /    人く/イ|  L_>、    /ヘ
            `ー‐'´   /   '/ | !   \ヽj/ / /^ヽ
                r‐'´    ,' /j j    ヽト、   /  ノ\_
               }    / ///      ∧ヽ      /
                ヽ.   / /く/     │l\_>     /
                \_/ l          │l      /
                  |`ヽ{_        ノ {   __/
                  |   `ー┬┬-、(厂'ー'´/
                  |     ,' /       /



637 :デフォルトの名無しさん:2009/10/01(木) 20:36:31
araneidaってどう?
hunchanroot使う人多いみたいだけど

638 :デフォルトの名無しさん:2009/10/04(日) 01:05:34
clbuildが/home/myname/.sbcl/
以下にいろいろインストールしちゃうんだけど
/usr/share/common-lisp/
以下に変更する方法ないものだろうか

639 :デフォルトの名無しさん:2009/10/04(日) 02:32:41
>>569

いまさらだし、ネタばれ読んでから作ったものですが、、、

(defun make-decode-hash (key-list)
  (let ((d-hash (make-hash-table :size 47))
        (bs-list (coerce "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ" 'list)))
    (dolist (x (append key-list bs-list) d-hash)
      (or (gethash x d-hash)
          (setf (gethash x d-hash) (pop bs-list))))))

(defun decode-google (key quest)
  (let ((dec-hash (make-decode-hash (coerce (nstring-upcase key) 'list))))
    (format t "~{~a~}~%" (mapcar #'(lambda (x) (gethash x dec-hash))
                                 (coerce (nstring-upcase quest) 'list)))))

(decode-google "jobs" "8MLDQ6TUI6TFMLRHAANRA6Q8EFLDMQ86II2O32S5J13JXOJ")

この問題に関してなら、コンパイルなしでハッシュが使える言語なら、
何でも向いているといえそうな気がします。


640 :デフォルトの名無しさん:2009/10/04(日) 09:55:07
Lispのハッシュってどれくらい早いの?
データが多くなければMySQLの代わりに使える?

641 :デフォルトの名無しさん:2009/10/04(日) 09:59:12
速さで言えば充分に速いと思うけど、
MySQL (リレーショナルデータベース) の価値は速さじゃないからなぁ…
代わりに使えるかどうかという疑問には簡単には答えられない。 状況による。

642 :デフォルトの名無しさん:2009/10/04(日) 10:20:44
>>640
SQLite使いなよ。
http://www.cliki.net/SQLite%20Lisp%20interface

643 :デフォルトの名無しさん:2009/10/04(日) 10:22:48
>>640
お前バカか?
基本ハッシュテーブルの方が早いわ。

644 :デフォルトの名無しさん:2009/10/04(日) 10:28:32
>>641-643
wikiで関係代数、関係論理の項目読んでみた。
無知でごめん。勉強になります。

645 :デフォルトの名無しさん:2009/10/04(日) 11:40:30
>>643
MySQLのHEAPテーブルだったらオンメモリなハッシュテーブルみたいだから
あまり変わらんのでは?

646 :デフォルトの名無しさん:2009/10/04(日) 11:58:01
>>645
いや基本遅いから。
いちいちこんな簡単なこと聞くなよ低能。

647 :デフォルトの名無しさん:2009/10/04(日) 12:53:17
日本語のようだが意味が通じない

648 :デフォルトの名無しさん:2009/10/04(日) 13:53:54
アフリカ人並の読解力だな

649 :デフォルトの名無しさん:2009/10/04(日) 14:16:01
差別発言だな

650 :デフォルトの名無しさん:2009/10/04(日) 17:44:32
アフリカ人の平均言語性IQが異常に低いのは事実であり、差別発言ではない。

651 :デフォルトの名無しさん:2009/10/04(日) 17:51:15
Lisperの平均的社会性が低いのは分かった。

652 :デフォルトの名無しさん:2009/10/04(日) 18:11:00
知能の低い人や頭のおかしい人は、変なタイミングで変なことをわかっちゃうからね。
この人なら、町内会のチラシ見て宇宙の真理とかもわかっちゃいそう。

653 :デフォルトの名無しさん:2009/10/04(日) 18:16:47
そのチラシに第42回とか、42歳とか、42年目とか書かれていたのかもしれん

654 :デフォルトの名無しさん:2009/10/04(日) 18:53:36
人生、宇宙、すべての答えが42だとしても、
42という数字がそうであると一瞬で確信できるのはやっぱりキチガイ。

655 :デフォルトの名無しさん:2009/10/04(日) 20:35:14
(defmacro macro-test ()
(let ((g (gensym)))
`(eq ',g ',g)))
を評価して

>(macro-test)
を評価すると
T
となるのですが

>(EQ '#:G6575 '#:G6575)
を評価すると
nil
となるのはどうしてでしょうか?


656 :デフォルトの名無しさん:2009/10/04(日) 20:53:59
>>645
マニュアル見ると、機能的には実装もハッシュぽいね。
これならあんまりかわらないのかも。

657 :デフォルトの名無しさん:2009/10/04(日) 21:08:32
>>655
前者は gensym で作成されたシンボルが g にうめ込まれている。二つは同じシンボルなので比較するとT。
後者はリーダーが読む毎に別のシンボルを作成する。後者の場合はリーダーが読んだ結果は (EQ <シンボルA> <シンボルB>) でこの二つは別のオブジェクト。
SYNBOL-NAME で取得するとどっちも "G6575" がかえってくるだろうけど、別のシンボル。#: はこれを実現するためのマクロだからね。
この動作は CLHS 2.4.8.5 で規定されている。

658 :655:2009/10/04(日) 21:53:02
納得しました.ありがとうございました.

659 :デフォルトの名無しさん:2009/10/05(月) 01:54:11
windowsにsbclとcffiをインストールすると
うまく動くPCと動かないPCがある
何が違うんだろう

660 :デフォルトの名無しさん:2009/10/05(月) 06:08:18
>>656
アホだなお前。

661 :デフォルトの名無しさん:2009/10/05(月) 09:07:17
> マニュアル見ると、機能的には実装もハッシュぽいね。

苦笑い

662 :デフォルトの名無しさん:2009/10/05(月) 09:09:42
今迄、これほど顕著になることはなかったけれど、
なんかこのスレの程度の低さが露呈されてきたようだな。
このスレッドには基礎的なデータ構造すら理解できていない人間が多すぎる。

663 :デフォルトの名無しさん:2009/10/05(月) 09:12:22
でもそのレスだったら、このスレで一番程度の低い人でも書けますよ。

664 :デフォルトの名無しさん:2009/10/05(月) 21:29:52
ハッシュテーブルを外部プログラムに任せる方が速いCL実装があるとは信じら
れないが、そんなことが分からない人間がこのスレにいることは信じるしかない
みたいだな。


665 :デフォルトの名無しさん:2009/10/05(月) 22:11:24
>>664
Lisp脳は簡単な日本語も分からないのか?
どこにLispの実装より早いと書いてある??? はぁ????



666 :デフォルトの名無しさん:2009/10/05(月) 22:12:13
脳細胞がリストとS式出来ているから無理は無いかwwww


667 :デフォルトの名無しさん:2009/10/05(月) 22:13:21
Orz

668 :デフォルトの名無しさん:2009/10/05(月) 22:33:29
>>640
ハッシュテーブルで済む用途にはハッシュテーブルを使ったらいいし、
RDBS が必要な用途にはそれを使えばいい。
機能が違うのに性能を比較するのはナンセンス。

ただのハッシュテーブルで済むことに MySQL を使ってたのだとしたら、
アホなことやってんなぁと思う。 そんな話。

どうしても速度が気になるなら自分がやりたい条件で実測しろよ。

669 :デフォルトの名無しさん:2009/10/05(月) 23:10:59
>>656
この低能さんはプログラマなの?

670 :デフォルトの名無しさん:2009/10/05(月) 23:18:47
あんまり汚い言葉ばかり使っていると、自分のきれいな部分が汚れていくよ

671 :656:2009/10/05(月) 23:32:23
学生です…ハッシュつかったO(1)かと思ったのですが、違ったんですかね。
不用意な発言で荒れてしまい申し訳ありませんでした。

672 :デフォルトの名無しさん:2009/10/06(火) 00:13:37
殺伐としてきたな。まあお茶でも飲んで落ち着け


  旦旦旦旦旦旦旦旦旦旦旦/⌒ヽ旦旦旦旦旦旦旦旦旦
  ⊂二二二二二二二二二二( ^ω^)二二二二二二二二⊃  お茶が入りましたおー
                  |    /
                  ( ヽノ
                  ノ>ノ
              三  レレ


                         ∩     ダシャーン
       ミ                 //
     ミ    ⊂'ヽ  ∩      //   \
      ミ    \\\\_,,,,,,,,/ ∠          /
             \\\\    .,''.,':.',,      .,':.',, .,': l  .,':.',,|[]].,':...,
    ガッ        )   \\      ).,':.',,:.',,  []] .,':.',,.,':.',,.,日  .,':.',,.,':.',,          /
    凵@  ⊂二二二、___ヽ \_,,..ノ  /[]].,':',,:',[]]/[]]\[]].,':.',,|[]].,':.',, _ .,':.',,]]/ 日.,':.',,.., . ..,,,;:[]]


673 :デフォルトの名無しさん:2009/10/06(火) 00:20:50
lispは初心者を大事にするような風潮がないようだね。
最初は間違うものだから頑張れ。頑張れ。

674 :デフォルトの名無しさん:2009/10/06(火) 00:53:48
>>673
黙れマッチポンプ

675 :デフォルトの名無しさん:2009/10/06(火) 02:10:33
>>666
脳細胞がリストとS式で出来てるなんてうらやましい

676 :デフォルトの名無しさん:2009/10/06(火) 02:15:53
全部weak pointerですが

677 :デフォルトの名無しさん:2009/10/06(火) 02:53:18
頭を振ったらアトムが出てきたお

678 :デフォルトの名無しさん:2009/10/06(火) 03:38:22
>>675
表現可能ってだけで、できているわけではない。
それにS式である必要もない。

679 :デフォルトの名無しさん:2009/10/06(火) 12:48:29
リストはS式に含まれるから
単に(S式)か(アトムとコンスセル)かどっちかだな

680 :デフォルトの名無しさん:2009/10/06(火) 20:28:07
lambda式を取り出す手段てありますか?
(lambda (...) ...)はマクロとして評価されて返ってくるのは関数ですよね。

直接lambda式をいじる、という状況はあまり思い浮かばないけど
なんとなく気になったもので。

681 :デフォルトの名無しさん:2009/10/06(火) 22:30:21
>>679
M式って別の表現があることで分かるように、S式は印字表現だぜ。
>>680
#'(lambda (...) ...)のこと?

682 :デフォルトの名無しさん:2009/10/06(火) 22:42:27
>>681 M式 … S式は印字表現
なにをば(ry


683 :デフォルトの名無しさん:2009/10/06(火) 22:47:15
>>681
#'(lambda (...) ...)だと返ってくるのは関数ですよね。
ほしいのはその一段階前の状態です。
マクロとして評価されない(lambda (...) ...)と言えばいいのかな?

684 :デフォルトの名無しさん:2009/10/06(火) 22:56:05
lambda はスペシャルフォームだお。

685 :デフォルトの名無しさん:2009/10/06(火) 23:16:17
>>683
これかな。使ったことないけど。
http://www.lispworks.com/documentation/HyperSpec/Body/f_fn_lam.htm

686 :デフォルトの名無しさん:2009/10/06(火) 23:38:20
>>685
意図していたのはまさにそれです。ありがとうございました。
自分で聞いといて何ですが、どういうときに使うんでしょうね。

687 :デフォルトの名無しさん:2009/10/07(水) 00:04:50
function-lambda-expression の返す lambda expression に関しては、
CLHSにあるとおり nil が返る可能性があるからねぇ。最悪常に nil でもいいわけで。
ほとんどの処理系で最適化の具合でなくなっちゃうから、ユーザーレベルでこれを
アテにするほうな利用法はあまり見かけないね。プリティプリンタ、インスペクタなどの
表示系で nil になったても致命的じゃない場所で使われてるのはたまに見かける。

688 :デフォルトの名無しさん:2009/10/07(水) 00:20:36
>>684
節子、それcommon lispやない、schemeや

689 :デフォルトの名無しさん:2009/10/07(水) 01:40:17
節子、ここにいたのか

690 :デフォルトの名無しさん:2009/10/07(水) 05:16:56
defunのついでにdefvarで適当な名前の変数に関数定義のS式を格納しておくマクロでも
書けばいいんでねえか

691 :デフォルトの名無しさん:2009/10/07(水) 09:28:13
>>687
なるほど。表示系が一番適切そうですね。

>>690
書き込み見て気づきました。
       |
   \  __  /
   _ (m) _ピコーン
      |ミ|
   /  .`´  \
     ∧_∧  / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
    (・∀・∩< lambda式ってただのS式?
    (つ  丿 \_________
    ⊂_ ノ
      (_)


692 :デフォルトの名無しさん:2009/10/07(水) 10:26:33
>>690
defun特化なら、そのシンボルのsymbol-plistに加えた方がいいのでは?
ただdefun特化だと、無名のクロージャのfunction-lambda-expressionは取れないよね。

それからS式は印字表現だっての。

http://en.wikipedia.org/wiki/S-expression
> The term S-expression or sexp (for symbolic expression) refers to
> a convention for representing semi-structured data in human-readable
> textual form.

Elisp辺りはobjectの意味で使ってるけど。

693 :デフォルトの名無しさん:2009/10/07(水) 13:56:53
>>685-687
schemeだと、それがnilにならないの?
stalimもそうなのかな

694 :デフォルトの名無しさん:2009/10/07(水) 14:14:45
Schemeは、ラムダ式の評価後の値は実装依存の何かだよ。

$ gosh
gosh> (lambda () t)
#<closure #f>

$ guile
guile> (lambda () #t)
#<procedure #f ()>


695 :デフォルトの名無しさん:2009/10/07(水) 20:54:11
RDBSが必要な場面ってなんだろう
データがメモリーに入りきらないとき?

696 :デフォルトの名無しさん:2009/10/07(水) 21:11:11
「リレーショナル」ってどういう意味かわかるよな?

697 :デフォルトの名無しさん:2009/10/07(水) 21:44:42
データを別のプログラムやシステムと共有するとか、
冗長性を減らすとか、一貫性が必要な場合とか、完全性とか
セキュリティとか…いっぱいあるから RDBMS は勉強しとくといいよ。

698 :デフォルトの名無しさん:2009/10/07(水) 22:03:50
>>697
「リレイション」は無視かよ。

699 :デフォルトの名無しさん:2009/10/07(水) 23:19:42
>>698
なんか嫌なことでもあったのか?

700 :デフォルトの名無しさん:2009/10/08(木) 11:58:37
あったよ。

701 :デフォルトの名無しさん:2009/10/08(木) 13:35:12
Linuxに入れるclispをffi対応にしたいのですがどうすればいいのでしょう?
readlineとlibsigsegvはインストール済ですがffiもどこかから持ってくる?

configureするとこうなっています

Configure findings:
FFI: no (user requested: default)
readline: yes (user requested: default)
libsigsegv: yes

702 :デフォルトの名無しさん:2009/10/08(木) 13:55:41
>>701
configure の時のオプションは何?

703 :デフォルトの名無しさん:2009/10/08(木) 14:06:29
>>702
prefixでインストールディレクトリだけ指定しています
あと、configureではありませんが、srcディレクトリで
./makemake --with-dynamic-ffi
等も試してみました

704 :デフォルトの名無しさん:2009/10/08(木) 16:35:16
>>703

http://d.hatena.ne.jp/smeghead/20081223

しかし、clispのバージョンによって、ソースからインストールしたときに、ffiパッケージが
有効になるバージョンと有効にならないバージョンがあるようでした。

とあった。ここによると clisp 2.42 だと大丈夫のようだけど、調べてないです。


ほかにこんなのもありました。

http://blog.goo.ne.jp/espiya/e/d860223142e8884f7eb937db9ecc1712


705 :704:2009/10/08(木) 17:00:25
ためしに clisp-2.41 でやってみた。libsigsegv などを /usr/local ではない所に
入れているので、./configure のときにちょっと書き足したけど、結果は以下の
通り。

Configure findings:
FFI: yes (user requested: default)
readline: yes (user requested: default)
libsigsegv: yes


ということで、バージョン依存でよさそう。2.47 だと FFI は no になってた。

706 :デフォルトの名無しさん:2009/10/08(木) 19:19:35
"Land of Lisp"ってどうなんでしょうかね
ゲームを題材に、ってのは惹かれる

707 :デフォルトの名無しさん:2009/10/08(木) 22:23:35
ffcallがインストールしてあるか確認してください。
http://www.haible.de/bruno/packages-ffcall-README.html

以前は同梱してありましたが2.44で同梱されなくなりました。


708 :デフォルトの名無しさん:2009/10/09(金) 10:43:42
>>706
どうもアチラさんの絵のセンスは理解できない。
試み的には期待してる。


709 :デフォルトの名無しさん:2009/10/09(金) 11:21:50
>704-705>>707
インストールできました。ffcallという名前のライブラリだったんですね
ありがとうございます

710 :デフォルトの名無しさん:2009/10/09(金) 19:03:51
http://www.gnu.org/software/libffcall/

には

Note

The old page, http://www.haible.de/bruno/packages-ffcall.html, is deprecated (it offers an obsolete source tar ball).


と書いてあるんだけど、なんかあったの?

711 :デフォルトの名無しさん:2009/10/09(金) 19:22:36
なんかあったかというと、 http://www.gnu.org/software/libffcall/ が公式になったってくらいかな。
そっちの旧ページはもうメンテされてないし、古いソースがころがってるから見ちゃだめ、という意味。


712 :デフォルトの名無しさん:2009/10/10(土) 17:15:09
>>711
ありがとうございます。

cvs ってのがイマイチよく分からなかったのですが、なんとか落としてみました。

;; tgz で固めたのでも置いてくれれば個人的には楽なんですけど、筋違いですね。

713 :デフォルトの名無しさん:2009/10/11(日) 02:50:45
だよねーアーカイブ作れっての
cvsメンテしてる奴って完全にアホだよね

714 :デフォルトの名無しさん:2009/10/11(日) 07:00:09
そんなもんアーカイブなんて作る意味が無いわ

715 :デフォルトの名無しさん:2009/10/12(月) 21:45:55
古い話なのですが、私の環境でも>>223と同じエラーがでて実行することができません。
どのようにすればいいのでしょうか?よろしくお願いします。
使用OSはWindows XPです。

716 :デフォルトの名無しさん:2009/10/14(水) 23:07:20
>>715
俺んとこでは普通に動いたからなー
逆になんで動かないのかこっちが聞きたいw

717 :デフォルトの名無しさん:2009/10/16(金) 21:10:09
ためしにデスクトップに解凍したら>>223っぽいエラーがでた。

日本語も空白もないパスのときは普通に起動した。

718 :223:2009/10/16(金) 23:10:51
>>717
うまく動作したよ。フォルダの問題だったんだ。ありがとう。
かなり速い。
? (time (tak 12 6 0))
(TAK 12 6 0) took 0 milliseconds (0.000 seconds) to run
with 2 available CPU cores.
During that period, 172 milliseconds (0.172 seconds) were spent in user mode
0 milliseconds (0.000 seconds) were spent in system mode
12
?

719 :デフォルトの名無しさん:2009/10/18(日) 08:51:34
すいません、Windows、emacs23の日本語表示に関する質問です。

処理系はSBCLを使っています。
日本語を扱うため、色々調べた結果.emacsには以下の設定を書きました。

(set-language-environment "Japanese")
(set-terminal-coding-system 'utf-8)
(prefer-coding-system 'utf-8-unix)
(set-keyboard-coding-system 'utf-8)
(set-clipboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-buffer-file-coding-system 'utf-8)
(modify-coding-system-alist 'process""'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(set-default-coding-systems 'utf-8-dos)
(set-selection-coding-system 'utf-16le-dos)

(setq slime-net-coding-system 'utf-8-unix)

しかし、REPLで日本語を入力すると

decoding error on stream
#<SB-SYS:FD-STREAM for "standard input" {23B57741}>
(:EXTERNAL-FORMAT :SHIFT_JIS):
the octet sequence (130 10) cannot be decoded.

というエラーが出てきてしまって日本語が扱えません。
どなたか解決法を知っている方がいましたら教えて下さい。

720 :デフォルトの名無しさん:2009/10/18(日) 10:30:46
まず日本語を窓から投g(ry とかできたらどんなに良いかとたまに思うが
新聞の今日の一句を見て思い直す

>>719
slime起動して
sb-impl::*default-external-format* と
sb-alien::*default-c-string-external-format*
の値を調べて、:utf-8じゃなかったら
Emacsのホームフォルダに .sbclrcというファイルを作って
(setf sb-impl::*default-external-format* :utf-8)
(setf sb-alien::*default-c-string-external-format* :utf-8)
と書きこんどく。
直らなかったら次の人頼む

721 :デフォルトの名無しさん:2009/10/18(日) 11:08:53
>>720
レスありがとうございます。
しかし、そのように設定してもREPLで同様のエラーが出てしまいました。


ちなみに外部のテキストファイルtest.txtに対して

test.txt
----------
(12 23 あ)

以下を実行すると

(with-open-file ( in "test.txt")
(let ((word (read in)))
(format t "~A " word)))


(12 23 \202\240)
このように表示されてしまいます。


722 :デフォルトの名無しさん:2009/10/18(日) 16:34:53
すごくたくさんエンコーディングを設定しているなぁ。

(prefer-coding-system 'utf-8)

(set-default-coding-systems 'utf-8)

;; slime
(setq inferior-lisp-program "sbcl.exe") ; your Lisp system
(add-to-list 'load-path "~/.emacs.d/slime/") ; your SLIME directory
(require 'slime)
;(slime-setup)
(slime-setup '(slime-repl))
(add-hook 'lisp-mode-hook (lambda ()
(slime-mode t)))
(setq slime-net-coding-system 'utf-8-unix)

自分の設定はこんなだけど、utf-8で問題なく動くよ。

723 :720:2009/10/19(月) 23:27:45
>>722
それと同じ設定にしてみてもダメでした。
Windowsからだと難しいようですね。
Linuxの環境を整えた後にまた挑戦してみます。

724 :デフォルトの名無しさん:2009/10/20(火) 07:03:00
>>723
Windowsのインストーラは標準ではUTF-8の環境をインストールしてくれないので
インストール時に項目をチェックしてないのではないかな?

725 :デフォルトの名無しさん:2009/10/20(火) 20:23:07
commonlispのオープンソースで金融関連のものってありませんか?
QuantLib のようなものを探しているのですが

726 :722:2009/10/20(火) 20:50:16
>>723
ntemacs-23, sbcl1.0.29で、win xp, vista共に
UTF-8で使えているよ。
何が違うのでしょうね。

727 :sage:2009/10/25(日) 13:31:35
Gauche-rfbのようなライブラリってCommon lispにありますか?

728 :デフォルトの名無しさん:2009/10/25(日) 20:28:59
作ればあるよ。

729 :デフォルトの名無しさん:2009/10/25(日) 22:45:38
Common lisp を勉強しようと思うんですが、「ANSI Common Lisp」か「実践CommonLisp」
どちらが初心者におすすめですか?

730 :デフォルトの名無しさん:2009/10/25(日) 23:12:49
ANSI Common Lisp

731 :デフォルトの名無しさん:2009/10/25(日) 23:57:06
実践CommonLisp

732 :デフォルトの名無しさん:2009/10/26(月) 00:35:32
少ないんだから両方読め

733 :デフォルトの名無しさん:2009/10/26(月) 08:28:26
ネットの入門サイト+On Lispで学んだ俺はそれを勧めてみる

734 :デフォルトの名無しさん:2009/10/26(月) 15:37:10
>>729
ANSI Common Lisp の方がいいんじゃね。
古本屋にウインストンの本があったら、それもいいかもね。

735 :729:2009/10/26(月) 16:28:55
皆さん、ありがとうございます。
両方買いますが、まずは「ANSI Common Lisp」の方で
勉強することにしました。

736 :デフォルトの名無しさん:2009/10/26(月) 19:09:06
Practical Common Lisp をちょっとだけ読んでみた。
Lisper には当たり前の話なんだろうけど、テスト用の
データも S 式で用意するのね。これは簡単で良いね。

737 :デフォルトの名無しさん:2009/10/27(火) 01:26:17
ウインストンは。。。 公共図書館で頼んでおけばそこになくても
他の図書館から借りてくれたものを貸してくれるよ。
みれば分かると思うけど、car/cdrを使わずにfirst/restでやってるから
当時のご時世がよくわかると思うよ。グレアムのANSI Common Lispのほうが
いいんじゃないの?

738 :デフォルトの名無しさん:2009/10/28(水) 22:15:02
ウインストンの本は題材が今のと違って人工知能っぽいものや
数学っぽいものがあるんで、また違う角度からLispが楽しめるんじゃない?

739 :デフォルトの名無しさん:2009/11/05(木) 22:51:18
う、うん……(´・ω・`)

740 :デフォルトの名無しさん:2009/11/16(月) 11:58:43
grahamのOn Lispのflattenで(s式に含まれるatomを単純にリストアップする関数)
(flatten '`(,X Y))
を計算させると、
`(,X ,@QUOTE)
となるのですが、どうしてこうなるのか、どう考えればいいかよくわからないので
どなたか教えてください。

なお、flattenは
(defun flatten(x)
(labels((rec(x acc)
(cond((null x)acc)
((atom x)(cons x acc))
(t(rec(car x)(rec(cdr x)acc))))))
(rec x nil)))
です。

741 :デフォルトの名無しさん:2009/11/16(月) 13:09:17
On Lispそのままのコードは、私もいくつか動かなかった
改良されたmetabangの人の関数がお勧め

742 :デフォルトの名無しさん:2009/11/16(月) 17:11:31
clbuildで/usr/share/common-lisp
以下に各種アプリを入れる方法ないのでしょうか

743 :デフォルトの名無しさん:2009/11/16(月) 22:18:22
ttp://www.u.dendai.ac.jp/~sato/index_jp.html

744 :デフォルトの名無しさん:2009/11/17(火) 08:50:05
>>740
えーとまず、back quote 式は read 時に、指定された通りのリストを構築する式に展開される。
`(,x y)であれば、たとえば scheme 風に(qq (unquote x) y)といった感じになるかもしれない。
ただし、この展開された式がどのようなものになるかは処理系に依存する。

で、これに'をつけると、その展開された式を quote したことになる。
'`(,x y) なら(quote (qq (unquote x) y)) とかになる。

それが flatten に渡されるわけだから、上記のように展開されていた場合には結果は (qq unquote x y) となる。

と、ここで話が終われば簡単なんだけれど、
repl に表示する式が(この場合での qq のように)back quote 式の展開形であると判断する手掛かりがある場合、
処理系によっては back quote 式に戻して表示しようとする。
しかし flatten の戻り値の場合には当然 back quote 式の展開形としては不適切なものになっているはずなので、
なにやらぶっこわれた back quote 式が表示されることになる。
どうぶっこわれるかは処理系依存。

745 :デフォルトの名無しさん:2009/11/17(火) 11:52:05
>>741
実はダグホイトのLOL(Let Over Lambda)という本を読んでるんですが、
そこで、flatten関数にback quoteされた式を入れていて、一体どうなってるのか
だんだん分からなくなってしまったところです。
flattenは特別に難しい関数というわけではないので、back quoteの問題なのだと思います。

>>744
詳しい解説ありがとうございます。
私が使ってるlispはsbclなんですが、traceしてみると、途中、よくわからないですが(X '(Y))とかいうのをflattenしているらしく、これだったら(X QUOTE Y)となり、
最後によくわからないSB-IMPL::BACKQ-CONSというアトムをコンスしているようです、、。

試しに
(cons 'SB-IMPL::BACKQ-CONS '(X QUOTE Y))
を計算させると、
`(,X ,@QUOTE)
となります。

LOLの本でdefmacro/g!というマクロはflattenを使っていて、
このマクロにback quoteした式を入れているのですが、
なにかよくわからなくなってしまった、、、。

746 :デフォルトの名無しさん:2009/11/17(火) 16:06:57
weblocksチュートリアルみると便利ですね
でもチュートリアルのそのままの説明で作ると一部ちゃんと動かないのがありますね
demoみるとちょっと泥臭いこともしているので、
本当に綺麗には書けないってことでいいんでしょうか

747 :デフォルトの名無しさん:2009/11/17(火) 18:03:16
CLISP 2.42での質問です。
Emacsなどのテキストエディタを使わずに、、saveinitmem、clisp -M を
使いながら、対話形式での開発の使い勝手を試している所です。
関数をコンパイルした後でも、定義内容を確認する方法はあるのでしょうか?

[1]> (defun double(x)(* x 2))
DOUBLE
[2]> #'double
#<FUNCTION DOUBLE (X) (DECLARE (SYSTEM::IN-DEFUN DOUBLE)) (BLOCK DOUBLE (* X 2))>
Break 1 [3]> (compile 'double )
DOUBLE ;
NIL ;
NIL
Break 1 [4]> #'double
#<COMPILED-FUNCTION DOUBLE> <-- 定義内容が判らない

748 :デフォルトの名無しさん:2009/11/17(火) 22:56:21
>>747
function-lambda-expression

[1]> (defun double (x) (* x 2))
DOUBLE
[2]> #'double
#<FUNCTION DOUBLE (X) (DECLARE (SYSTEM::IN-DEFUN DOUBLE))
  (BLOCK DOUBLE (* X 2))>
[3]> (compile 'double)
DOUBLE ;
NIL ;
NIL
[4]> #'double
#<COMPILED-FUNCTION DOUBLE>
[5]> (function-lambda-expression #'double)
(LAMBDA (X) (* X 2)) ;
T ;
DOUBLE


749 :デフォルトの名無しさん:2009/11/17(火) 23:38:28
>>748
有り難うございます。
まだまだ判らない事が多いので、On Lispを読了したら、一度体系的なLisp可燃本も読んでみます。

750 :デフォルトの名無しさん:2009/11/21(土) 08:52:27
>>746
あれ?アパッチアップデートしたら普通に動いた

217 KB [ 2ちゃんねる 3億PV/日をささえる レンタルサーバー \877/2TB/100Mbps]

取りに行ったけどなかった。次は一時間後に取りに行くです。
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :


read.cgi ver 05.0.7.8 2008/11/13 アクチョン仮面 ★
FOX ★ DSO(Dynamic Shared Object)