###前提・実現したいこと
授業でLispについての課題が出ました.
これまでC++やpythonといった言語しか触ったことがないので,
Lispの課題が難しく,質問させていただければと思います.
できるだけweb等で調べましたが,提出期限が迫ってきていますので,
お力をお貸しいただければと思います.
###該当のソースコード
いかにソースコードを載せます.
namesと,salaryとpositionという関数を作成せよという問題です.
さらに,make-personの最初の要素を抽出する関数family-nameと最初以外の要素を抽出する関数given-nameも作成しないといけません.
lisp
1(define (make-entry person salary position) 2 (list person salary positon)) 3(define make-person list) 4(define test-person (make-entry (make-person "james" "tom" "harry") 300000 "president")) 5 6(names test-person) 7; Value: (james tom harry) 8(salary test-person) 9; Value: 300000 10(position test-person) 11; Value: president 12 13(given-names (make-person "williams" "anne" "marie" "heather")) 14; Value: (anne marrie heather) 15(family-name (make-person "williams" "anne" "marie" "heather")) 16; Value: williams
Lispについての知識がほぼありません.
ですが,コードを見ればある程度理解できるようになりました.
解答のためのアドバイス等をお願いできればと思います.
よろしくお願いいたします.
###追記です.
まず,最初の3問についてですが,以下のように関数を定義して解決しました.
lisp
1>(define (names x) 2 (car x)) 3> (names test-person) 4'("james" "tom" "harry") 5> (define (salary x) 6 (car (cdr x))) 7> (salary test-person) 8300000 9(define (position x) 10 (cdr (cdr x))) 11> (position test-person) 12'("president")
さらに,最後の2問ですが以下のように関数を定義して解決しました.
lisp
1> (define (given-names x) 2 (cdr x)) 3> (given-names (make-person "williams" "anne" "marie" "heather")) 4'("anne" "marie" "heather") 5> (define (family-name x) 6 (car x)) 7> (family-name (make-person "williams" "anne" "marie" "heather")) 8"williams" 9
###補足情報(言語/FW/ツール等のバージョンなど)
実行環境はDrRacketです.
OSはwindows7です.
作成しなければならない関数をご自分で書けるところだけでも書いてみて下さい。動かなくてもいいので、それを質問に追記してもらえますか。院生といえば立派な大人ですので、さすがに小学生の夏休みの宿題の手伝いみたいなことをしてあげるのは気がひけます (参考書も紹介しましたし)。
何ができてないんですか?まさか1から10まで全部教えろと?問題の前提もわかりません。(すでに定義された関数を使えということ?)
ikedasさん.返信いただきありがとうございます.私も少し甘えている部分がありました.ご指摘いただき,反省しました.昨日一日かけて必死にLispの勉強をしました.質問に自分なりの回答を追記いたしました.
ozwkさん.回答いただきありがとうございます.参考にさせていただきました.私なりに作成した答えを質問に追記させていただきました.
回答1件
あなたの回答
tips
プレビュー