【入門】Common Lisp その7【質問よろず】at TECH
【入門】Common Lisp その7【質問よろず】 - 暇つぶし2ch924:デフォルトの名無しさん
11/06/09 08:28:32.56
>>921
マクロはコンパイル時のコード変換だから、こういうのとはあんま関係ない。
定数じゃないと無理だし。

(ql:quickload :cl-ppcre)

(destructuring-bind (k . v)
(ppcre:split "=" "data=1")
(cons (intern (string-upcase k) :keyword) v))

(ppcre:register-groups-bind (k v)
("(.*)=(.*)" "data=1") ; ひどくいい加減な正規表現
(list (intern (string-upcase k) :keyword)
v))

(ql:quickload :cl-irregsexp)

;; パターンの表現に癖があるので、詳細は逆引きCommonLisp参照
(cl-irregsexp:match-bind (k #\= v) "data=1"
(list (intern (string-upcase k) :keyword) v))


925:デフォルトの名無しさん
11/06/09 14:39:00.54
>>922-924
ありがとうございます。

internという関数があるのですね。
文字列 キーワード 変換 とかでググってもわからなかったので助かりました。

926:デフォルトの名無しさん
11/06/09 14:50:44.46
キーワードは特殊なシンボル

927:デフォルトの名無しさん
11/06/09 23:01:35.62
cxmlでfeedを読み込んでデータを抽出する方法が全くわからん・・・
S式形式でパースするとアクセスがひどく冗長的になるので、
DOMでやろうと思うのだけれどドキュメントが無くて手詰まり。

どっかにサンプル無いですかね・・・

928:デフォルトの名無しさん
11/06/10 07:27:03.77
>>927
ほんとに調べた? 「closure xml」でググると、最初に

URLリンク(d.hatena.ne.jp)

という記事が引っ掛かるし、Closure XMLは本家のドキュメントも非常に整備されていて、

URLリンク(common-lisp.net)

まさにそのままズバリの「Quick-Start Example / FAQ」というのがあるんだけど。
APIの使い方が分からないのはDOMだからないよね? Lispへのマッピングについても、
「DOM/Lisp mapping」で触れられているし。

929:デフォルトの名無しさん
11/06/10 07:49:18.80
あと、S式形式でのアクセスが冗長というけれど、ケースバイケースだと思うよ。
S式にしてしまえば単なる木構造になるわけで、リスト操作の関数が使える。
mapcarとかreduceとか使いたい放題だし、child-nodesとか使わずに済む。
XMLS形式なら確かcddr。

S式じゃないにしても、STPならmap-childrenとかdo-childrenとかあるし、便利。
DOMは小回り効かないからあんまお勧めしない。

930:デフォルトの名無しさん
11/06/13 10:48:15.98
すいません><
まったくの初心者なので質問させてくださいorz

次のリスト構造をconsセルを用いて表してください。
1 (a b c)
2 ((x y)(u v))
3 (a (b (c)))

次のconsセル構造に対応するリストを書いてください
1 [1| -] →[2| -]→[3| -]
2 [. | /]→[. | /]→[hi | /]

lispの基本的な問題らしいのですが、
プログラミング初心者のため、わからず困っています。

どの問題でもいいので、ご存じの方いらっしゃいましたらよろしくお願い致します。

931:デフォルトの名無しさん
11/06/13 10:57:19.28
>>930
【CL】Lispの宿題片付けます 2【Scheme】
スレリンク(river板)

932:デフォルトの名無しさん
11/06/13 11:47:35.17
>>930
とっても簡単な問題だから、もうちょっと自分で考えてみようぜ。
コンスセルというものを理解できれば、単なるパズルだ。

URLリンク(blog.livedoor.jp)

で、これを踏まえた上で、例えば、(a b)というリストは、

[ a | -]→[ b | / ]

なわけだ。((a) (b))なら、

[  | -]→[  | / ]
↓    ↓
[ a | / ] [ b | / ]

になる。じゃあ、>>930の問題の答えはどうなる?

933:デフォルトの名無しさん
11/06/13 12:00:14.96
ちなみに、これはLisp以外でも、とてもよく使われるデータの形。
「線形リスト」というものの一種で、「片方向リスト」と呼ばれる。
プログラミング言語の授業取った(=プログラミングに興味がある)なら、
覚えといて絶対に損はないぜー。

934:デフォルトの名無しさん
11/06/13 12:28:06.58
>>930
どうでもいいけど後半の1と2は回答しようがないな
問題を写し間違っているんだろうけど

935:デフォルトの名無しさん
11/06/13 12:42:14.84
2は(cons (cons (cons hi nil) nil) nil)じゃないかと予想。
1は謎。関係ないけど、「-]→」って表現にはちょっと感心した。


936:デフォルトの名無しさん
11/06/13 12:52:44.47
>>935
なるほど
carから矢印が伸びていたわけね

937:デフォルトの名無しさん
11/06/15 13:51:51.22
>>929
racketのS式と互換性あるといいんだけどなあ
racketは不正なhtmlでも変換する

938:デフォルトの名無しさん
11/06/15 14:19:17.00
Closure XMLなら、パーサに自前で定義したハンドラを渡せば、
好きなデータ構造を作れるようになってたと思う。


939:デフォルトの名無しさん
11/06/17 10:54:24.21
>>223
URLリンク(journal.mycom.co.jp)

940: 【東電 80.6 %】
11/06/17 12:44:21.29
えー

941:デフォルトの名無しさん
11/06/19 08:00:09.18
寿命短すぎ
パロディ処理系すら作れやしない

942:デフォルトの名無しさん
11/06/19 08:17:10.20
プログラミング言語Asumis

943:デフォルトの名無しさん
11/06/19 08:54:11.21
>>939
もうGCに回収されるのか

944:デフォルトの名無しさん
11/06/19 16:44:44.51
アスミスが死にそうだからな


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch