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

■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
垢版 |
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/
2016/08/13(土) 20:37:11.64ID:moPmKDp5
>>388
Allegroはなぁ、ネタに値段書いていない銀座の寿司屋のイメージが
2016/08/24(水) 21:29:45.05ID:9kP9ZOpP
何千桁もあるbignumを適当な所に小数点を打ったり10桁毎にスペースを入れたり
100桁毎に改行して表示したいけど、formatでやる方法があったら教えてくれ
2016/08/25(木) 00:53:05.88ID:zjrUiCsA
>> 390
ない.
調べるよりプログラム書いた方がはやい.loopマクロで5行位で書ける.
どうしてもformatつかうなら自分で書いてformatの~/で呼べば?
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
393390
垢版 |
2016/08/25(木) 13:02:06.57ID:fbmJygYr
返答どうも!
>>391
formatのドキュメント見ても無さそうだったから聞いてみたけど、やっぱりないんだね…
素直にloopでやることにする

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

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

(g #’f 3)
6

Ref.
http://www.asahi-net.or.jp/~kc7k-nd/onlispjhtml/functions.html
2016/09/22(木) 14:56:41.64ID:svLBF04r
>>399
動きました。
ありがとうございます。
2016/09/23(金) 21:24:52.87ID:CYp0vnmU
Scheme 系だと

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

(g f 3)
6

って書けるんだね。
2016/09/23(金) 21:27:52.82ID:y9ZJGzw+
へ〜
403デフォルトの名無しさん
垢版 |
2016/09/24(土) 05:38:26.18ID:nvb+KqdK
関数型のブームは来てるけど
HaskellとかScalaに押されてない?
2016/09/24(土) 08:10:52.77ID:VAyZ/8kj
GNU makeやgdbにguileがリンクされるようになったよ
もう少しの辛抱や
2016/09/24(土) 17:22:03.97ID:ryMydsM5
Common Lispはマルチパラダイムの言語だ
goto(go)すら存在する
2016/09/25(日) 21:24:57.99ID:HvtwLO9L
>>405
goはマッカーシーのlispからあるけどお。すらってなにい?
2016/09/25(日) 22:23:20.95ID:eD42xPoY
すらまっぱぎ
2016/09/26(月) 15:46:42.52ID:b0MmmDW8
>>406
Common LispのスレでCommon Lispと言って何か問題あるか?
2016/10/05(水) 23:25:20.08ID:C9cv9Gl5
>>366
Steeleが互換性考えて別にしたけど
やっぱり一緒にしとけばよかったーと後に述懐していた
2016/10/12(水) 15:59:00.20ID:RYqLfx9/
その代わりCommon Lispはlistとかstringという変数名を定義出来る
Schemeの場合lstとかlsって変数名にせざるを得ない
あとapplyの方が使用頻度が高い気がするがSchemeでも普通に使うわけだから
funcallを使うのは一貫性があるとも言える
2016/10/12(水) 16:33:55.36ID:8kMwO8W7
今となっては後の祭りだし慣れないしとあるが、lisp-1にするなら最初の関数名をもっと考えた方が良かったような。
listじゃなくてmklistとかさ。
2016/10/12(水) 16:34:06.22ID:M1jDwzz2
#fと'()の分離はなんでだったんや?
2016/10/12(水) 17:40:21.14ID:RYqLfx9/
それはSchemeスレでする話だな
2016/10/13(木) 20:07:13.89ID:xgGYMiuu
0や""はtrueなのに'()だけがfalseになるのが美しくないからだろう
C言語の0みたいに特定の値が自動的にfalseになるのは古い言語だからだな
2016/10/13(木) 22:52:04.77ID:C1I1uhJH
いずれの仕様であっても特に美しいとは思わんな。
決め事でしか無いように思う。
2016/10/15(土) 20:05:40.07ID:HnVxap0b
デフォルトコンストラクタと等しい値はすべてfalseにしてしまえ。
417デフォルトの名無しさん
垢版 |
2016/10/16(日) 18:14:50.68ID:r9fJMQJL
ふと、このスレを見つけたので質問します。
「Land of Lisp」を参考に、CLISPでCommonLisp勉強してるんですが、LEPL
じゃなくてLispのコードをエディタで書いて一度に実行させるなんて
ことはできるんでしょうか?
出来るなら方法を教えてください。参考サイトなどでも構いません。
418デフォルトの名無しさん
垢版 |
2016/10/16(日) 18:17:07.36ID:r9fJMQJL
>>417の書き込みの訂正

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

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

macbookのOSX10.6で
iterm上のvimで選択したS式をscreenを介して
もう一つのitermで動くsbcl(又はclisp)に評価、
出力させるのを目標にしています。
なにか知っている事があればよろしくおねがいします。
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ってマジでモダンなエディタに移行するのがムリ
2016/11/02(水) 16:50:18.95ID:Zl1DvHRz
SLIMEっぽいのは一応あるのね
http://www.vim.org/scripts/script.php?script_id=2531
2016/11/22(火) 20:43:31.30ID:KvJ3xe8B
独り言だが
ClojureとClozure CLってべつものなのか
Clozure CLはjava関係ないのね
2016/12/18(日) 08:12:54.17ID:H5VGjwqC
conditinのerrorクラスにformat-controlとformat-argumentがないのは何んでなんでしょうか?
simple-conditinとかにはあるのに
2016/12/18(日) 15:52:29.97ID:odpeYpuF
多重継承だから
2017/01/11(水) 12:56:06.91ID:Dj+amy8+
生まれて初めてLISPをやってみようと思い、CygwinのCLISPを入れて見たのだが、プログラムを保存する方法が特にないのは驚いた。
dribbleでインタプリタのコマンドライン履歴を保存するか、(EXT:SAVEINITMEM)でインタプリタのメモリイメージを保存するくらいしかできないみたい。
あるいは事前にテキストで書いておくか。
他のLISP処理系もこんなものなの?

ヒューレットパッカードRPL言語を少しだけ使ったことがあるけど、あっちは保存がちゃんと考えられていた。
2017/01/11(水) 13:08:56.90ID:oS3M3jOK
Win機で開発するのが間違ってる
2017/01/11(水) 13:41:55.71ID:CpReZJmf
『プログラムの保存』とは一体……?
2017/01/11(水) 17:25:20.73ID:cn/qBmTu
BASICのSAVEか…
2017/01/11(水) 22:14:49.39ID:qtQ06epR
>>437
えっ ちょっと待って
今ラジカセ用意するから...間違えてLOADって打たないでね
2017/01/11(水) 22:20:44.82ID:LKP7w0Oz
www
2017/01/12(木) 00:33:15.10ID:ON8wOxBk
>>436
RPLだと関数も変数も必ずファイルとして存在する。
RPLの祖先のForthも同じかもしれない。
2017/01/12(木) 06:54:05.10ID:pNuRGDWl
ほしいのは、emacs+slime環境?
あるいはaclとかlispworks
2017/01/12(木) 09:59:06.51ID:wWrcziVQ
REPL環境じゃなくて内蔵エディタみたいなのを期待してたんだろう
確かにメモ帳程度のでも内蔵されてれば便利だとは思う
特に初学者の人とか。いきなりEmacsは敷居が高い
2017/01/12(木) 10:32:26.76ID:UNGksYU7
>>442
emacs環境だとLispよりもemacsの勉強になってしまうからなあ
2017/01/12(木) 13:02:34.77ID:bT7YUbCB
それならlemでいいんじゃない?
2017/01/12(木) 21:49:43.62ID:42JGZ5hK
xyzzyで
2017/01/13(金) 04:08:54.48ID:BzdeAQwY
>>442
>>443
同意、最初からEmacsは難しすぎる
LispよりEmacsの方が難しいくらい
2017/01/13(金) 11:27:29.66ID:QaVc2fKW
clispの開発が終わってしまったし
2017/01/13(金) 11:29:56.98ID:QaVc2fKW
>>442
emacsのlispってemacsのカスタマイズ用途なのでは?
アプリ作成用のlispがまだあるのかどうかは知らないが
2017/01/16(月) 16:21:04.42ID:qEdXmsgN
>>447
その情報のソースってどこかにある?
CLISP自体かなり前から更新されてなかったから終わったと言っても今更感があるけど…
2017/01/17(火) 11:28:47.60ID:sDlYunh0
>>449
長年更新していないので、オワタ可能性は高くね?
451デフォルトの名無しさん
垢版 |
2017/01/18(水) 14:32:40.83ID:+0XE4PkH
Lispの仕事ってまだあるのだろうか?
古いシステムの保守程度?
2017/01/18(水) 23:04:07.71ID:JFSfmo96
どっかの会社で、common lispでやっているところがあったはず

完全に廃れた感じはしないな
2017/01/19(木) 09:03:33.76ID:Gh/NlR3g
>>452
どんな仕事なんだろう?
2017/01/19(木) 09:38:33.97ID:uhfgjGGl
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja
2017/01/19(木) 12:17:01.00ID:TbaqbQZk
Lispと言えば、研究用途かWebサーバーで使うようなイメージしかないわ
456デフォルトの名無しさん
垢版 |
2017/01/19(木) 21:19:55.80ID:gCwd8P05
お前の抱えるイメージなんかに誰か興味を持つと思ったのか?
457デフォルトの名無しさん
垢版 |
2017/01/20(金) 00:42:56.98ID:rsnxDR2c
>>456
でも実際に何に使われているんだ?
研究専用言語だと思っていたのだが。
2017/01/20(金) 10:12:07.41ID:Nvso2zBq
>>456 みたいなBOTに使われているという実例
2017/01/20(金) 11:53:33.16ID:coMO3q54
LispはUNIX以外で実用的に使うのは無理なのかねえ?
2017/01/20(金) 12:28:28.14ID:SVUCN/eR
スレチだからlisp scheme スレでやれよ
http://echo.2ch.net/test/read.cgi/tech/1426481152
もっと釣れるぞ
2017/01/20(金) 12:48:36.11ID:8z9BkdPJ
Lisp はWebサーバ用の言語
2017/01/20(金) 19:20:31.02ID:XUVXYG0t
lemのgithubのページでインストールにros install cxxxr/lemしろと書いてあって
roswell使うのは分かるけどroswellってどっからインストールしてんの?
cxxxr/lemという引数を見る限りgithubからインストールしてるような気がするけど
2017/01/21(土) 06:13:30.03ID:mYUPWk0d
>>459
https://www.amazon.co.jp/dp/4274065979/
464デフォルトの名無しさん
垢版 |
2017/01/21(土) 11:57:50.59ID:0dQCqgGa
>>463
そんな読み物で何が分かるんだ?
2017/01/21(土) 16:17:15.46ID:UaDisbHg
roswellどのサーバーにアクセスするとか一切ドキュメントに書いてない
こんな糞アプリ使えるかよ
2017/01/21(土) 16:57:44.64ID:QA6O+rWe
ここで聞いてももう駄目
githubのissueかtwitterかredditのr/lisp_jaかja.stackoverflowのlispタグのどれかが良い
2017/01/21(土) 19:07:36.86ID:1H01QVS7
ttps://github.com/roswell/roswell の Installing scripts に
$ ros install fukamachi/qlot # will install it from the GitHub
って書いてあるけど知りたいのはこれじゃないってこと?
2017/01/22(日) 10:57:47.88ID:b2xXmV6K
>>404
言語組み込み解禁で誰かがluaに変えると予想
2017/01/29(日) 02:04:07.29ID:jpDTpmEM
Land of lispの動画見て来ますた
2017/01/29(日) 22:21:22.72ID:QjLLrAQA
>>469
いらっしゃーい
2017/01/30(月) 02:40:54.54ID:mBiYg09G
>>469
あの動画楽しいよね。
472デフォルトの名無しさん
垢版 |
2017/02/01(水) 13:13:45.46ID:uPNpYJZg
わかる人いたら教えて下さい。
iterm2でrepl(sbcl)を最初から起動させようと
replというプロファイルを作り
.bachrcに

if [ "$ITERM_PROFILE" = "repl" ];
then
sbcl
fi

と書くと、たしかにsbclを実行するのですが
以下のメッセージが出て起動しません。

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

どうしたら良いのでしょうか。
ちなみに再度sbclと入力するといつも通り起動します。
2017/02/03(金) 00:03:57.75ID:uSnzwgyQ
コマンドで呼んでいるsbclとスクリプトで呼び出しているsbclが違うんじゃないか?
パスを確認すると良いとおもう
sbcl --core コアのパス/sbcl.core と明示しても解決するかもしれない
2017/04/05(水) 00:10:33.71ID:dD5KS/CH
Common lispからpythonの特にnumpy関係のライブラリ使う方法ないのでしょうか?
2017/04/05(水) 03:18:41.90ID:9ywW0Xq5
>>474
なんでcommonlispからソレが必要になるのかがまずわからんがrationalでは扱えないくらいでかい桁数の浮動小数値なの?
2017/04/08(土) 15:56:08.90ID:Uc8a2Yv6
Pythonだとpandasとかにある関数がないからpythonをffiで呼べないとclでdeel learningきついなあ

Sparse matrix計算も出来ないみたいだし
2017/05/03(水) 04:46:48.46ID:94GhuONY
Cのプログラムがcuda使うと100倍速くなるのに
cl-cudaマクロがせいぜい7倍ぐらいしか速くならないのは何故?
2017/05/09(火) 20:10:22.37ID:v4p9YapF
>>477
行列のかけ算とかだとopenblas(マルチコアCPU)とcublas(CUDA、GPU一枚)で俺の環境だと7倍程度の差しかないし、多分比較対象のCプログラムの書き方が相当まずいだけだと思う
2017/05/09(火) 20:19:48.11ID:v4p9YapF
>>476
密行列はLLA、MGL-MATがopenblas/MKL/cuBLASのラッパーになってる。

疎行列なら現状ラッパーが多分ないのでCFFIでcuSPARSEへのバインディングを書こう。

全結合のディープラーニングならMGLでCommon Lispのみでできる。

PythonのClojureライクなLisp方言ならHy(hylang)がある。
Pythonのライブラリが直接使いたいならこれを使えばいい。
480デフォルトの名無しさん
垢版 |
2017/05/19(金) 19:45:50.96ID:N5yG+fmp
初心者です ハマってしまったので助けて下さい!
ファイルを読み込んで a=abcのような行を
(defparameter *a* 'abc)のようにするマクロなのですが
(readconfig "filename") だとうまくいくのですが
(readconfig (concatenate 'string "file" "name"))のように呼び出しても引数が評価されずにそのまま渡ってしまいます。

(defmacro readconfig (filename)
`(progn
,@(loop for i in
(with-open-file
(s filename :direction :input :external-format :utf-8)
(loop :for line := (read-line s nil) :while line :collect line))
collect
(let* ((l (split-sequence:split-sequence #\= i))
(a (read-from-string (concatenate 'string "*" (car l) "*")))
(b (second l)))
`(defparameter ,a (read-from-string ,b))))))
2017/05/19(金) 21:20:45.65ID:/bO1sGez
引数が評価されてないね
2017/05/19(金) 21:49:23.53ID:/bO1sGez
>>480
macroexpand で展開してみた?
483デフォルトの名無しさん
垢版 |
2017/05/19(金) 21:58:39.33ID:N5yG+fmp
>>482
concatenateの方はエラーがでます
普通に文字列を渡せばうまくいくのですが
484デフォルトの名無しさん
垢版 |
2017/05/20(土) 00:30:38.53ID:ZKXptbMB
>>480
どうしてマクロにしたの?初心者だから?
2017/05/20(土) 01:15:39.37ID:I6lRK30f
>>484
関数の中で(eval `(defparameter ,変数 ,シンボル))とすると変数がありませんというエラーがでてきて
普通にdefparameterしようとしても変数定義はされないのでマクロでやるしかないと思いました。
(eval `(defparameter ,変数 ,文字列))だとうまくいきますね
486デフォルトの名無しさん
垢版 |
2017/05/20(土) 01:30:33.54ID:I6lRK30f
問題が解決できました evalはあまり使っちゃいけない的なことが言われてたと思うので
なんとなく気が引けてマクロを使っちゃった感じです 初心者の質問に付き合ってくださりありがとうございました!
487デフォルトの名無しさん
垢版 |
2017/05/21(日) 06:36:36.81ID:oB72Q+Da
OpenCVの超解像計算プログラムは
cpuとgpuで100倍近く速度に差があるよ
488デフォルトの名無しさん
垢版 |
2017/05/21(日) 06:50:43.54ID:oB72Q+Da
typed racketみたいな型推論をcommon lispでする方法ないのでしょうか?
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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