Lispと一緒(19) ラズパイPico2でもuLisp、list関連関数

Joseph Halfmoon

Common Lispの系譜を継ぐマイコン上のuLispをラズパイPico2上で練習中。今回は巡り巡ってリスト関係の関数に戻ってまいりました。uLispは「マイクロ」なので関数の数は少ないですが、この辺の関数どもの挙動にはCommon LispとuLispの差は見えませぬ。あったら困るか?さっさと練習して次へ。

※Lispと一緒 投稿順 index はこちら

※実機確認は Raspberry Pi Pico2で行ってます。

※使用させていただいとります uLisp のバージョンは 4.6b (Arm用)です。

※uLispとCommon Lispとの動作比較のために使わせていただいている処理系は以下です。

SBCL 2.2.2  (SBCL =  Steel Bank Common Lisp )

リスト関連の関数

今回練習してみるのは以下の関数どもです。

    • list、リストを生成する。
    • length、リストの長さを求める。
    • reverse、リストの順序を反転する。
    • nth、リストのN番目(0から数えて)の要素を返す。
    • append、リストを連結する。
    • assoc、Aリスト(アソシエーション・リスト)から一致を見つける。
    • member、リストから一致するメンバを見つける。
list、length、reverse、nth

まずはCommon Lisp上での動作確認。list

リストを作って、変数L0に格納した後、lengthでリストの長さを reverseで順序反転したリストを、nthでリストの1番目(0から数えるので2番目)の要素をそれぞれ求めてみてます。また、setfを使ってリストL0の先頭要素をを別なリストで書き替えてみてます。

同じことをuLispで実行したものが以下に。uLisp_list

append、ついでにcons

appendのついでに、既にやっているけど cons。そして前の例でsetfしているので、こちらは、毎度お世話になっておりますsetq。まずはCommon Lisp上での動作確認。list2

uLispの場合が以下に。uLisp_list2

assocとmember

Common Lisp上での動作確認。list3

uLisp上はこちら。uLisp_list3

今回は挙動に差もなく平穏無事。しかし、次回はそうもいかない予定。

Lispと一緒(18) ラズパイPico2でもuLisp、配列、array へ戻る

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です