Bye Bye Moore

猫マンション建築の野望を胸に零細事業主として資本主義の荒波に漕ぎ出したアラサー男の技術メモ

"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