Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

"read-from-string"で文字列をアトム/リストとして

Lispの強みといえば、S式です。
これをシリアル経由で取得できれば外部のつよつよデバイスで計算したS式を手元で受け取り評価という脳汁出る動きができます。

実際のところ

文字列で記述された要素を変数aにぶち込んでみます。

1213> (defvar a "(* 7 8)")
a

これをprintしてもevalしても……当然、文字列として扱われます。

1205> (print a)

"(* 7 8)" 
"(* 7 8)"
1205> (eval a)
"(* 7 8)"


ここで、read-from-stringを介すと……
文字列がS式と解釈されます。

1205> (print (read-from-string a))

(* 7 8) 
(* 7 8)


1205> (eval (read-from-string a))
56