point
次のように定義されたレコードタイプがあります。
(define-record-type point
(make-point x y)
point?
(x point-x)
(y point-y)
)
ここで、レコード タイプを拡張し、point
次のように新しいレコード タイプを定義します。
(define-record-type cpoint
(make-cpoint color)
cpoint?
(color cpoint-color)
(parent point)
)
スキームシェルの定義に対して上記を実行すると、すべて正常に動作します。point
型を適切に構築できます。ただし、cpoint
次のように型を構築しようとすると:
(define p2 (make-cpoint 8 9 'red))
次のエラーが表示されます。
; ...rfi/9/record.rkt:100:28: アリティの不一致;; 予想される引数の数が、指定された数と一致しません。予想: 1; 与えられた: 3; [、コンテキストの bt]
cpoint
の子なので、コンストラクターで型point
への引数を受け入れる必要があると思いました。point
どうすればこれを機能させることができますか?
PS私はSchemeが初めてです。