私はCommonLispを学び始めたばかりで、急速にそれに夢中になり、型システムに移行しました。私は、応用プログラミングに対する特別な愛情を育んでいるようです。
私が理解しているように、CLでは文字列とリストは両方ともシーケンスですが、シーケンスをマッピングするための標準関数はなく、リストのみであるようです。それらがリストに提供される理由、それらが基本的なデータ型である理由などはわかりますが、シーケンスで機能するように設計されていないのはなぜですか?それらはより一般的なタイプであるため、リストよりもアプリケーション関数をターゲットにする方が便利なように思われます。それとも私はそれがどのように機能するかを完全に誤解していますか?
編集:
私が特に混乱しているのは、シーケンス(抽象化)とリスト(実装)がCLで混乱しているように見える方法でした。これは歴史的な理由によるものであるというのがコンセンサスのようです。lispは非常に長い間存在しているため、その機能とマクロを介してソフトウェアエンジニアリングプラクティスの開発をほぼ計画することができます。CLには、リストでのみ動作するシーケンス前の抽象化関数と、シーケンスでより一般的な方法で同じことを行う関数が混在しているため、どの関数がシーケンスに適用され、どの関数がリストに適用されるかは一見任意に見えます。現時点でCLを学んでいる人として、著者が最初にシーケンスをよりクリーンな抽象化として導入し、次にその抽象化の最も基本的な実装としてリストを購入すると便利だと思います。