1

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が初めてです。

4

1 に答える 1