これはかなりばかげているように見えるかもしれませんが、リスト内の要素にアクセスするにはどうすればよいですか?
(nth coll index)
例えば:
(nth [1 2 3 4] 2) ; -> 3 (since it uses zero-based indexing)
「name」「adress」「phonenumber」変数を含むクラス「entry」を作成する方法はありますか?または、clojure(および一般的な関数型プログラミング)では不可能ですか?その情報を含むオブジェクトのリストを取得できない場合、このタスクをどのように実行しますか?
Clojureで可能ですが、一義的です。Clojureでは、データエンティティの基本的な抽象化はクラスではなくマップです(Javaフレームワークとの直接の相互運用が必要な一部のコーナーケースを除く)。したがって、マップを使用するだけです。
(def entry {:name "x" :address "y" :phone-number "z"})
アイテムの名前にアクセスするには、次のいずれかを使用します
(:name entry)
また
(get entry :name)
前者はマップのキーがキーワードである場合にのみ機能し、後者はすべてのタイプのキーで機能します。
したがって、あなたの例では、データモデル(電話帳)はそのようなマップのシーケンス(たとえば、リストまたはベクトル)になります。
ユーザーの入力を読み取ってユーザーが何をしたいのか(エントリの追加、エントリの削除、情報の印刷)を知り、適切な関数を呼び出して、実行時に最初の関数を呼び出す関数を作成することを考えていました。各関数へのエントリのリストをパラメータとして渡すのは正しいことですか?
モデルは1つの主要なデータ構造(電話帳seq)のみで構成されているため、それをargとして渡すことは、関数を設計するための適切な方法です。より多くの種類のトップレベルコンテナがあると予想される場合(つまり、より現実的なアプリケーションの場合)、最初は少し威圧的に見えるアプリケーションコンテキストパターンを調べることをお勧めします(少なくとも私にとってはそうでしたが、 Clojure固有の専門用語がたくさん含まれていますが、学ぶ価値は十分にあります。