X



【入門】Common Lisp その11【質問よろず】
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
垢版 |
2014/09/21(日) 22:49:21.73ID:FJokPHUt
Lisp Schemeスレでは恥ずかしくて聞けないようなことを質問したり、
Lisp Schemeスレの話題は高度すぎて気後れする人が話しあったり。
それ以外でもCommon Lispについての話題なら歓迎します。

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

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

■前スレ
【入門】Common Lisp その10【質問よろず】
http://peace.2ch.net/test/read.cgi/tech/1361341876/

■Wiki
http://wiki.fdiary.net/lisp/ (id:guest pass:cl)
http://cl.cddddr.org/
http://tips.lisp-users.org/common-lisp/
0351デフォルトの名無しさん
垢版 |
2016/05/01(日) 15:18:51.08ID:tKi6j9CT
匿名通信(Tor、i2p等)ができるファイル共有ソフトBitComet(ビットコメット)みたいな、
BitTorrentがオープンソースで開発されています

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

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

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


The Covenant Project
概要

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

目的

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

特徴

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

接続は抽象化されているので、I2P, Tor, TCP, Proxy, その他を利用可能です
DHTにはKademlia + コネクションプールを使用します
UPnPによってポートを解放することができますが、Port0でも利用可能です(接続数は少なくなります)
検索リクエスト、アップロード、ダウンロードなどのすべての通信はDHT的に分散され、特定のサーバーに依存しません
0352デフォルトの名無しさん
垢版 |
2016/05/16(月) 08:34:14.29ID:fo7lQzzV
closによるオブジェクト指向を勉強している最中だけど、Javaやc++と違って、プライベートな変数や関数とかないの?

そうなると、あまり弄って欲しくない変数とかを弄るような危ないコードとか書けちゃうけど、それはプログラマーの裁量に任されているの?
0354デフォルトの名無しさん
垢版 |
2016/05/19(木) 02:07:18.56ID:jTIEwZO7
closは実行時になんでも弄れる仕組みになっているので隠してもしょうがない
その代わりJavaやC++とは比較にならないほど動的
お勉強するなら遅延バインディングなどに代表される動的さを学ぶのが有益
(定義時に存在しないクラスのスロットをごにょごにょするなど)
0356デフォルトの名無しさん
垢版 |
2016/05/20(金) 13:08:49.10ID:JbHmc+E3
EmacsにはCLOSエミュのeieioがあるけどそれだとプライベートメンバーが作れる
当然eieioの場合はインスタンスは配列だから無理矢理いじろうとすれば可能だけど
うっかり触る事は出来なくなる
(slot-valueでアクセス出来なくなるとかsetfで書き込めないとか)
0358356
垢版 |
2016/05/23(月) 18:45:02.73ID:sxSKeUhG
>>357
ちゃんと機能してるよ
:reader :accessor 経由だとどこでもアクセス出来る
それらを定義しないで slot-value 経由でアクセスすると
定義された class 用の defmedhod 内じゃないとエラーになる
0359356
垢版 |
2016/05/23(月) 18:54:51.46ID:sxSKeUhG
>>358は間違えた
slot-value 経由でも defmethod 内ならどんな class 用のでもアクセス出来ちゃってた…
>>357のリンク先の通りだった
もしかしたら次のバージョンなら直ってるのかもしれない
0360デフォルトの名無しさん
垢版 |
2016/06/23(木) 23:59:50.36ID:G+YERTIa
Common Lispの規格を進化させようと日本人が頑張ってるサイトがあった気がしたけど全く見つからない
教えてくれ
0363デフォルトの名無しさん
垢版 |
2016/06/24(金) 15:11:04.73ID:RDdMjpj7
この機能が足りないって思ったら
ライブラリ提供すればいいんだよ

規格を変えるってのは
よほど説得力がないと難しい
0364360
垢版 |
2016/06/24(金) 15:12:24.11ID:64NOMHgE
Common Lispのこの関数はこうすべきだったとか色々書いてて面白かったが
ふと思い出してまた見たくなったけどググっても全然出てこなくて余計に見たくなってる…
もう少し探してみるよ
slideshareだったかな…
0366デフォルトの名無しさん
垢版 |
2016/06/24(金) 16:41:47.94ID:YpPFayvt
CommonLisp好きだけど未だに関数をfuncallで呼ばないとイケナイ名前空間の扱いだけは理解できない。
なんで分けたんだろうって解説どこかにないかな?
0368デフォルトの名無しさん
垢版 |
2016/06/24(金) 20:04:29.17ID:hXccTKlm
>>366
物事をカテゴライズして名前空間分けたいってニーズは別に変じゃない。
そういうの他の言語でもあるよね。
察するに言語設計者自信がその時偶々欲しかったのが入っちゃうんじないかな?
0369デフォルトの名無しさん
垢版 |
2016/06/24(金) 20:25:53.91ID:d6du9t53
動詞と名詞を兼ねる単語が多すぎる英語にそもそもの問題があるやも
list然りmap然り
0370デフォルトの名無しさん
垢版 |
2016/07/01(金) 20:10:20.19ID:yQsAPI3T
質問だけどAllegro CLで実行ファイルを作成するとサイズはどれぐらいになる?
SBCLだと40MB超えるけどAllegro CLだとどうなるか気になったので
0371デフォルトの名無しさん
垢版 |
2016/07/02(土) 12:59:00.03ID:OqC3vtTc
よく見たらAllegroで実行ファイルを作成出来るのはEnterprise版以上だった
そもそもEnterprise版を使った人がいなさそうだな…
0373デフォルトの名無しさん
垢版 |
2016/07/02(土) 17:43:37.01ID:wOG82f10
>>372
いや、流石にAllegro Enterprise を個人で買うのは滅多居ないだろw
つかオンライン販売も小売りもとりあえずsalesへメールからってくらいだし、そもそも買ってる人自体特定業種のプロだけじゃねぇの?
0374デフォルトの名無しさん
垢版 |
2016/07/03(日) 12:32:44.64ID:i88MiToD
数理システムだと社内で使ってるんじゃないの
中の人はこのスレ見てないか
0375デフォルトの名無しさん
垢版 |
2016/07/03(日) 21:01:01.25ID:yj3P75/T
Professionalだと6万ぐらいだから個人でも買えなくもないけど
Enterpriseはいくらすんだろ?
数十万はしそうだけど仕事で使うんなら払える額でもあるな
0378デフォルトの名無しさん
垢版 |
2016/07/04(月) 14:40:11.42ID:k9kiUpvM
LispWorksの実行ファイル書き出しは最小で6.5-7.5MBぐらいからみたいだからかなりいいな
けど64bit版がfor Hobby Usersとか書いてるくせに$1,500とか高いし…
0380デフォルトの名無しさん
垢版 |
2016/07/06(水) 15:08:51.31ID:3m0XVVXB
ECL使った事ないけど実行ファイルを作成したら普通にC言語で作ったぐらいのサイズになるんだろうね
あと似たようなのにClaspがあるけど埋め込みするには今後はこっちが主流になるかな
0381デフォルトの名無しさん
垢版 |
2016/07/12(火) 23:20:50.64ID:CyKbMfvi
Common Lispの処理系がわざとバグを入れてmaximaが動かなくなるように仕向けてるようなのを見つけたのだけど
Abclとclispはgnome3と同じ状態になってる?
0382デフォルトの名無しさん
垢版 |
2016/07/13(水) 04:54:37.74ID:4HQ8M+Y/
maximaは主に古い仕様のcommonlispで動く
処理系が古い仕様のサポートをやめることをmaxima切り捨ての陰謀とするなら
そうなんじゃないの
maximaが合せるのが筋だろ
0386デフォルトの名無しさん
垢版 |
2016/07/13(水) 22:43:00.43ID:Fcdf94Kw
sourceforgeが死んでてMaximaのサイトにアクセス出来んぞ…
SBCLのサイトにもアクセス出来ないしCL界隈はsourceforgeに依存してるとこが多いな
0388デフォルトの名無しさん
垢版 |
2016/08/12(金) 21:39:14.20ID:duu5cHW/
フリーソフト作る目的でAllegro CLのAcademic版のEnterprise版買った方いませんか?
非商用目的で64bit版の実行ファイルを作れるとなると、Enterprise版でAcademic版を買うのがよいのかなと。
(そもそも、条件にマッチしてるかわかってないですが)

Academic版ならEnterpriseでも意外にお手頃価格で買えたりしないかな?

そういえば、Allegro CLの日本代理店って撤退したんですかね?
HPが消えてるのか、アクセスできないですね。
0390デフォルトの名無しさん
垢版 |
2016/08/24(水) 21:29:45.05ID:9kP9ZOpP
何千桁もあるbignumを適当な所に小数点を打ったり10桁毎にスペースを入れたり
100桁毎に改行して表示したいけど、formatでやる方法があったら教えてくれ
0391デフォルトの名無しさん
垢版 |
2016/08/25(木) 00:53:05.88ID:zjrUiCsA
>> 390
ない.
調べるよりプログラム書いた方がはやい.loopマクロで5行位で書ける.
どうしてもformatつかうなら自分で書いてformatの~/で呼べば?
0392デフォルトの名無しさん
垢版 |
2016/08/25(木) 09:19:55.78ID:1bKygDuA
>>390
(format t "~,,' ,10:D" 222232244629420445529739893461909967206666939096499764990979600)
222 2322446294 2044552973 9893461909 9672066669 3909649976 4990979600

> 2.3.1 ~D ― Decimal
> arg の消費: 1個
> パラメータ: ~ mincol , padchar , commachar , comma-interval D
(中略)
> ` : ’ で修飾すると,下から comma-interval 桁ごとに commachar で指定された文字で数字を区切る ( comma-interval のデフォルトは3, commachar のデフォルトは ` , ’ ) .
http://super.para.media.kyoto-u.ac.jp/~tasuku/format-func.html

上の例だと commachar は空白、comma-interval は 10、他のパラメータは無し
文字をパラメータにする場合その文字の頭に単引用符 ' を付けて表す
改行もOK

(format t "~,,'
,1:D" 123)
1
2
3
0393390
垢版 |
2016/08/25(木) 13:02:06.57ID:fbmJygYr
返答どうも!
>>391
formatのドキュメント見ても無さそうだったから聞いてみたけど、やっぱりないんだね…
素直にloopでやることにする

>>392
そうか、カンマをスペースにすれば10桁区切りは出来るのか
100桁目を改行に出来れば最高だが、あまり大きくないbignumならこれで十分か
とりあえずありがとう
0394デフォルトの名無しさん
垢版 |
2016/08/25(木) 14:33:57.04ID:6zcPyAfh
学習用にC++で書いた楕円曲線暗号のデバッグの時にBignum何度も目視したの思い出してちと鬱が入るなぁ
0395デフォルトの名無しさん
垢版 |
2016/09/13(火) 11:41:49.02ID:J1eBbaIT
日本人コモンリスパーで有名な人って誰?
竹内センセーと苫米地ハカセ以外で!
0396デフォルトの名無しさん
垢版 |
2016/09/13(火) 22:25:28.74ID:8U9RmJUe
竹内センセーと苫米地ハカセは国際コモンリスパーとしての認知度は低いヨ
もちろんtakの竹内センセーは知られているけどコモンリスパーじゃないネ
トマベチ? ダレ?
fukamachi ,kuroda は広く知られているヨ
0398デフォルトの名無しさん
垢版 |
2016/09/22(木) 11:55:47.84ID:svLBF04r
何がまずいのかわからん。
誰か教えて。

(defun f (x) (* 2 x))
(defun g (y z) (y z))

(g f 3)

*** - SYSTEM::READ-EVAL-PRINT: variable F has no value
The following restarts are available:
USE-VALUE :R1 Input a value to be used instead of F.
STORE-VALUE :R2 Input a new value for F.
ABORT :R3 Abort main loop
0403デフォルトの名無しさん
垢版 |
2016/09/24(土) 05:38:26.18ID:nvb+KqdK
関数型のブームは来てるけど
HaskellとかScalaに押されてない?
0410デフォルトの名無しさん
垢版 |
2016/10/12(水) 15:59:00.20ID:RYqLfx9/
その代わりCommon Lispはlistとかstringという変数名を定義出来る
Schemeの場合lstとかlsって変数名にせざるを得ない
あとapplyの方が使用頻度が高い気がするがSchemeでも普通に使うわけだから
funcallを使うのは一貫性があるとも言える
0411デフォルトの名無しさん
垢版 |
2016/10/12(水) 16:33:55.36ID:8kMwO8W7
今となっては後の祭りだし慣れないしとあるが、lisp-1にするなら最初の関数名をもっと考えた方が良かったような。
listじゃなくてmklistとかさ。
0414デフォルトの名無しさん
垢版 |
2016/10/13(木) 20:07:13.89ID:xgGYMiuu
0や""はtrueなのに'()だけがfalseになるのが美しくないからだろう
C言語の0みたいに特定の値が自動的にfalseになるのは古い言語だからだな
0415デフォルトの名無しさん
垢版 |
2016/10/13(木) 22:52:04.77ID:C1I1uhJH
いずれの仕様であっても特に美しいとは思わんな。
決め事でしか無いように思う。
0417デフォルトの名無しさん
垢版 |
2016/10/16(日) 18:14:50.68ID:r9fJMQJL
ふと、このスレを見つけたので質問します。
「Land of Lisp」を参考に、CLISPでCommonLisp勉強してるんですが、LEPL
じゃなくてLispのコードをエディタで書いて一度に実行させるなんて
ことはできるんでしょうか?
出来るなら方法を教えてください。参考サイトなどでも構いません。
0418デフォルトの名無しさん
垢版 |
2016/10/16(日) 18:17:07.36ID:r9fJMQJL
>>417の書き込みの訂正

LEPLじゃなくてREPLです。
0419デフォルトの名無しさん
垢版 |
2016/10/16(日) 21:52:46.83ID:8ptZ6tcn
うちはSBCLだけど、たぶんloadでできる
$ cat hoge.lisp
(defun twice (f x) (funcall f (funcall f x)))
(defun dbl (x) (* x 2))
$ sbcl
This is SBCL 1.3.6, an implementation of ANSI Common Lisp.
(略)
* (load "hoge")

T
* (twice #'dbl 3)

12
0420デフォルトの名無しさん
垢版 |
2016/10/17(月) 00:33:48.91ID:sDQTJcTS
>>419
おおおお
出来ました!!!
サンプルプログラムまで書いていただきありがとうございます。
Lispを初めて日が浅いのですが、とても分かりやすかったです。
0421デフォルトの名無しさん
垢版 |
2016/10/17(月) 09:04:24.02ID:QD9IQMc+
clisp の場合は
clisp a.lisp
という風にファイル名を指定するだけでも実行できるよ
この場合REPLとは異なり、特に何もしなくても自動的に終了する

sbcl には同様のことをする --script オプションがある
0422デフォルトの名無しさん
垢版 |
2016/10/17(月) 10:07:13.56ID:sDQTJcTS
>>421
なるほど、そういう方法もあるんですね。参考になります。
0423デフォルトの名無しさん
垢版 |
2016/10/18(火) 11:30:07.17ID:1ksiQ1k/
多分emacsでSLIME使うのが一番捗る。ある程度やって、もっと環境良くしたいと思ったら導入してみるといい
ファイルに書きなぐって一部だけ評価するとかできる
0424デフォルトの名無しさん
垢版 |
2016/10/23(日) 13:47:10.52ID:crofOT9u
(defparameter param #\a)
を生成するマクロ
(defmacro ch! (ch)
`(defparameter param #\,ch))
が、動かないのはなぜでしょうか?
教えて下さい。
0425デフォルトの名無しさん
垢版 |
2016/10/25(火) 08:55:35.68ID:dAAkpCke
424です。
どなたか、教えてください。
0427デフォルトの名無しさん
垢版 |
2016/10/26(水) 01:17:49.11ID:Z8ZLd5j0
>>425
面白い。426のいうとおり
リードマクロがマクロの展開より先に展開されるのがうまく動かない理由。
(defmacro ch! (ch)
(read-from-string (format nil
0428デフォルトの名無しさん
垢版 |
2016/11/01(火) 15:37:56.06ID:d/Emm7ZQ
424です。
>>426
ご返答ありがとうございます。
「入力マクロを何と心得ておる」
リードマクロの事でしたら不勉強でした。
1文字づつ地を這う様なカスタマイズに思えて
lispっぽさが感じられず読む気が無くなるんです。
>>427
書きかけの続きを
ぜひ読みたいです。おねがいします。

macbookのOSX10.6で
iterm上のvimで選択したS式をscreenを介して
もう一つのitermで動くsbcl(又はclisp)に評価、
出力させるのを目標にしています。
なにか知っている事があればよろしくおねがいします。
0429デフォルトの名無しさん
垢版 |
2016/11/02(水) 05:41:35.19ID:ydCUsA37
>>428
割とマジでLispで遊ぶならEmacs使う方が良いような(Slime環境とか https://common-lisp.net/project/slime/
vimとかよりかなり楽(emacsのキーバインドで死ねるって人には向かない)

つかLisperならEmacsと心中するのが吉

#って感じなEmacsと入水心中の俺 orz
#Clojure含めてEmacsとLispってマジでモダンなエディタに移行するのがムリ
0432デフォルトの名無しさん
垢版 |
2016/12/18(日) 08:12:54.17ID:H5VGjwqC
conditinのerrorクラスにformat-controlとformat-argumentがないのは何んでなんでしょうか?
simple-conditinとかにはあるのに
0434デフォルトの名無しさん
垢版 |
2017/01/11(水) 12:56:06.91ID:Dj+amy8+
生まれて初めてLISPをやってみようと思い、CygwinのCLISPを入れて見たのだが、プログラムを保存する方法が特にないのは驚いた。
dribbleでインタプリタのコマンドライン履歴を保存するか、(EXT:SAVEINITMEM)でインタプリタのメモリイメージを保存するくらいしかできないみたい。
あるいは事前にテキストで書いておくか。
他のLISP処理系もこんなものなの?

ヒューレットパッカードRPL言語を少しだけ使ったことがあるけど、あっちは保存がちゃんと考えられていた。
0442デフォルトの名無しさん
垢版 |
2017/01/12(木) 09:59:06.51ID:wWrcziVQ
REPL環境じゃなくて内蔵エディタみたいなのを期待してたんだろう
確かにメモ帳程度のでも内蔵されてれば便利だとは思う
特に初学者の人とか。いきなりEmacsは敷居が高い
0448デフォルトの名無しさん
垢版 |
2017/01/13(金) 11:29:56.98ID:QaVc2fKW
>>442
emacsのlispってemacsのカスタマイズ用途なのでは?
アプリ作成用のlispがまだあるのかどうかは知らないが
0449デフォルトの名無しさん
垢版 |
2017/01/16(月) 16:21:04.42ID:qEdXmsgN
>>447
その情報のソースってどこかにある?
CLISP自体かなり前から更新されてなかったから終わったと言っても今更感があるけど…
■ このスレッドは過去ログ倉庫に格納されています

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