【入門】Common Lisp その11【質問よろず】
■ このスレッドは過去ログ倉庫に格納されています
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/ >>425
面白い。426のいうとおり
リードマクロがマクロの展開より先に展開されるのがうまく動かない理由。
(defmacro ch! (ch)
(read-from-string (format nil 424です。
>>426
ご返答ありがとうございます。
「入力マクロを何と心得ておる」
リードマクロの事でしたら不勉強でした。
1文字づつ地を這う様なカスタマイズに思えて
lispっぽさが感じられず読む気が無くなるんです。
>>427
書きかけの続きを
ぜひ読みたいです。おねがいします。
macbookのOSX10.6で
iterm上のvimで選択したS式をscreenを介して
もう一つのitermで動くsbcl(又はclisp)に評価、
出力させるのを目標にしています。
なにか知っている事があればよろしくおねがいします。 >>428
割とマジでLispで遊ぶならEmacs使う方が良いような(Slime環境とか https://common-lisp.net/project/slime/)
vimとかよりかなり楽(emacsのキーバインドで死ねるって人には向かない)
つかLisperならEmacsと心中するのが吉
#って感じなEmacsと入水心中の俺 orz
#Clojure含めてEmacsとLispってマジでモダンなエディタに移行するのがムリ 独り言だが
ClojureとClozure CLってべつものなのか
Clozure CLはjava関係ないのね conditinのerrorクラスにformat-controlとformat-argumentがないのは何んでなんでしょうか?
simple-conditinとかにはあるのに 生まれて初めてLISPをやってみようと思い、CygwinのCLISPを入れて見たのだが、プログラムを保存する方法が特にないのは驚いた。
dribbleでインタプリタのコマンドライン履歴を保存するか、(EXT:SAVEINITMEM)でインタプリタのメモリイメージを保存するくらいしかできないみたい。
あるいは事前にテキストで書いておくか。
他のLISP処理系もこんなものなの?
ヒューレットパッカードRPL言語を少しだけ使ったことがあるけど、あっちは保存がちゃんと考えられていた。 >>437
えっ ちょっと待って
今ラジカセ用意するから...間違えてLOADって打たないでね >>436
RPLだと関数も変数も必ずファイルとして存在する。
RPLの祖先のForthも同じかもしれない。 ほしいのは、emacs+slime環境?
あるいはaclとかlispworks REPL環境じゃなくて内蔵エディタみたいなのを期待してたんだろう
確かにメモ帳程度のでも内蔵されてれば便利だとは思う
特に初学者の人とか。いきなりEmacsは敷居が高い >>442
emacs環境だとLispよりもemacsの勉強になってしまうからなあ >>442
>>443
同意、最初からEmacsは難しすぎる
LispよりEmacsの方が難しいくらい >>442
emacsのlispってemacsのカスタマイズ用途なのでは?
アプリ作成用のlispがまだあるのかどうかは知らないが >>447
その情報のソースってどこかにある?
CLISP自体かなり前から更新されてなかったから終わったと言っても今更感があるけど… >>449
長年更新していないので、オワタ可能性は高くね? Lispの仕事ってまだあるのだろうか?
古いシステムの保守程度? どっかの会社で、common lispでやっているところがあったはず
完全に廃れた感じはしないな Lispと言えば、研究用途かWebサーバーで使うようなイメージしかないわ お前の抱えるイメージなんかに誰か興味を持つと思ったのか? >>456
でも実際に何に使われているんだ?
研究専用言語だと思っていたのだが。 >>456 みたいなBOTに使われているという実例 LispはUNIX以外で実用的に使うのは無理なのかねえ? lemのgithubのページでインストールにros install cxxxr/lemしろと書いてあって
roswell使うのは分かるけどroswellってどっからインストールしてんの?
cxxxr/lemという引数を見る限りgithubからインストールしてるような気がするけど roswellどのサーバーにアクセスするとか一切ドキュメントに書いてない
こんな糞アプリ使えるかよ ここで聞いてももう駄目
githubのissueかtwitterかredditのr/lisp_jaかja.stackoverflowのlispタグのどれかが良い ttps://github.com/roswell/roswell の Installing scripts に
$ ros install fukamachi/qlot # will install it from the GitHub
って書いてあるけど知りたいのはこれじゃないってこと? >>404
言語組み込み解禁で誰かがluaに変えると予想 わかる人いたら教えて下さい。
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と入力するといつも通り起動します。 コマンドで呼んでいるsbclとスクリプトで呼び出しているsbclが違うんじゃないか?
パスを確認すると良いとおもう
sbcl --core コアのパス/sbcl.core と明示しても解決するかもしれない Common lispからpythonの特にnumpy関係のライブラリ使う方法ないのでしょうか? >>474
なんでcommonlispからソレが必要になるのかがまずわからんがrationalでは扱えないくらいでかい桁数の浮動小数値なの? Pythonだとpandasとかにある関数がないからpythonをffiで呼べないとclでdeel learningきついなあ
Sparse matrix計算も出来ないみたいだし Cのプログラムがcuda使うと100倍速くなるのに
cl-cudaマクロがせいぜい7倍ぐらいしか速くならないのは何故? >>477
行列のかけ算とかだとopenblas(マルチコアCPU)とcublas(CUDA、GPU一枚)で俺の環境だと7倍程度の差しかないし、多分比較対象のCプログラムの書き方が相当まずいだけだと思う >>476
密行列はLLA、MGL-MATがopenblas/MKL/cuBLASのラッパーになってる。
疎行列なら現状ラッパーが多分ないのでCFFIでcuSPARSEへのバインディングを書こう。
全結合のディープラーニングならMGLでCommon Lispのみでできる。
PythonのClojureライクなLisp方言ならHy(hylang)がある。
Pythonのライブラリが直接使いたいならこれを使えばいい。 初心者です ハマってしまったので助けて下さい!
ファイルを読み込んで 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)))))) >>480
macroexpand で展開してみた? >>482
concatenateの方はエラーがでます
普通に文字列を渡せばうまくいくのですが >>480
どうしてマクロにしたの?初心者だから? >>484
関数の中で(eval `(defparameter ,変数 ,シンボル))とすると変数がありませんというエラーがでてきて
普通にdefparameterしようとしても変数定義はされないのでマクロでやるしかないと思いました。
(eval `(defparameter ,変数 ,文字列))だとうまくいきますね 問題が解決できました evalはあまり使っちゃいけない的なことが言われてたと思うので
なんとなく気が引けてマクロを使っちゃった感じです 初心者の質問に付き合ってくださりありがとうございました! OpenCVの超解像計算プログラムは
cpuとgpuで100倍近く速度に差があるよ typed racketみたいな型推論をcommon lispでする方法ないのでしょうか? >>488
common lispのコンパイラでも型推論くらいするの知ってるか?
それがどう駄目なのか,どうしたいのかをまず書けよ. sbclのtheのdescribeに相当する機能がtyped racketだとreplからしか使えないような意地悪されてるのでcommon lispでもそうかと思った sbclのdescribeで
https://github.com/sbcl/sbcl/blob/master/src/code/describe.lisp
derived-typeの情報だけ取り出して他の変数に格納したいのに
うまくいかない
streamに文字列出力する関数だからstreamの文字を正規表現かなにかで切り分ける方が良いのだろうか >>490
> sbclのtheのdescribe
が意味するところが分からない. Common lispでcのプログラムコード読み込んで
関数宣言一覧取り出して、ヘッダーファイル生成するような
パーサージェネレーターのサンプルコードどこかないでしょうか
c言語の解析するサンプルコードなら他のでも良いです 誰か知っていれば教えてほしいのですが
LispWorks 7.0 のmacOS版って日本語表示や日本語入力問題なく
できるようになっていますか?
LispWorks 6.1 Personalを使っているのですが日本語入力すると??に文字が
変わってしまうみたいなので。 ☆ 日本の、改憲を行いましょう。現在、衆議員と参議院の
両院で、改憲議員が3分の2を超えております。
『憲法改正国民投票法』、でググってみてください。国会の発議は
すでに可能です。平和は勝ち取るものです。お願い致します。☆☆ 僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』
HSR58 ところでlabelsって関数の名前の由来って何?
しっくりこない >>477
そもそもCLはインタプリタだからGPU使っても7倍程度しか速度出ないのは当たり前だろ。 >>500
clはコンパイラ言語だよ.仕様上インタプリタ実装も許容されているだけ こないだ迄Windows10の64bit版ではDEPの絡みで動かないと思ってた、SBCL版のMaximaが、
今試してみたらあっさり動いてしまいました。
sf.netに置いてあったインストーラでインストールした直後はCLISP版しか駄目だった
筈なんですが…。
うちではWindows10 Homeを使ってますが、皆様の処ではどうでしょうか? SBCL自体を別途インストールしたのが効いてるのかも知れないなぁ…。 Lispってwebフレームワークありますか?
一通りの機能のあるブログを作ったり出来るような 質問です。
Lispで書かれたLisp処理系はありますか? roswellについての質問なんですが
ros init ファイル名
としたときできるファイルの中身の
(progn ;;init forms
(ros:ensure-asdf)
;;#+quicklisp (ql:quickload '() :silent t)
)
って何ですか?
(ros:ensure-asdf)特にこれ >>509
そんな事俺に聞かれても知るわけないやろ頭おかしいんか? Common LispからC言語のモジュールを呼ぶ方法は簡単に見つかるのですが
C言語からCommon Lispプログラムを実行する方法が見つかりません。
GaucheならC言語からインタープリタを起動できるみたいなのですがCommonLispにはないのでしょうか? >>512
ただ別プロセスで処理系を起こして、そこの repl で評価できればいい・・というだけなら、 fork と exec で済むかも。
CからLisp関数を直接呼んだり、C関数でLispオブジェクトを直接扱うとかするのは、がっつり処理系依存だけど出来ることは出来る。
たぶんこの目的なら ECL が一番簡単だと思う。それっぽい例もあるし:
https://gitlab.com/embeddable-common-lisp/ecl/tree/develop/examples/embed
SBCL や Allegro CL でも出来るみたいだけど、かなり大変。
というのも、C関数が動いてる間にLisp処理系のGCが走ると死ぬ・・とか諸々あるので。一応リンクだけ:
http://www.sbcl.org/manual/#Calling-Lisp-From-C
https://franz.com/support/documentation/10.1/doc/foreign-functions.htm#lisp-from-c-1 Lispでグラフィカルにステップ実行できる方法ってEmacsでSLIMEやるしかないですか?
LispのためだけにEmacs覚えるのは勘弁してほしいので
VimでSlimv入れてやってみましたがGDBのようなステップ実行しか出来ませんでした。 すみません、勘違いでした。
edebugのように現在実行している行がわかるステッパ?が利用したいのですが
edebug以外にないでしょうか? >>514
「グラフィカルにステップ実行」と言ったらVisualStudioみたいな感じかと思うけど。
LispじゃなくてSchemeでもいいならRacketはどう?(ダメだよね ;_;)
かなり昔にDrSchemeって名前だった頃にちょっと遊んでみただけだけど。
https://docs.racket-lang.org/drracket/debugger.html Lispでドルマークって特別な意味ありますかね?正規表現とかナシで Land of Lisp、文字が小さくて読めない…(´;ω;`) だれかChocorateyにRoswell追加してクレメンス Windows版Roswellでinstallコマンド出来ている方はいますか?
sbcl-binのような末尾にbinがついて、ビルドが不要なものはインストールできるのですが
それ以外だと、msys2の有無にかかわらず~/.roswell以下にmsys2がインストールされて
それが全くまともに動作せず何もインストールできません。 最近Lispを勉強し始めた超初心者です。
関数型言語も初めてです。
末尾再帰の最適化をするとコンパイラがループにしてくれるので効率がいい、の説明が腑に落ちません。
再帰は読むのも書くのもループより高コストだと思いますが、
その結果がループ並みに早くなる、では何のために再帰にするのかわかりません。
なにか他にメリットが有るのでしょうか。 ■ このスレッドは過去ログ倉庫に格納されています