Доступ к полям подтипа структуры в Scheme и Racket

В Racket это дает ошибку:

(struct point-in-plane  (pos_x pos_y))  
(struct pixel point-in-plane (color))  

(define a-pixel (pixel 1 2 "blue"))  
(pixel-color a-pixel)  
(pixel-pos_x a-pixel) 
(pixel-pos_y a-pixel) 

Чтобы это работало, мне нужно заменить две последние строки на:

(point-in-plane-pos_x a-pixel) 
(point-in-plane-pos_y a-pixel) 

Аналогично в R6RS

#!r6rs
(import (rnrs))
(define-record-type point (fields x y))
(define-record-type cpoint (parent point) (fields color))
(define blue-point  (make-cpoint 1 2 "blue"))
(write (cpoint-x blue-point))

Выдает такую же ошибку.

По какой причине Scheme (и Racket) не позволяют обращаться к полям подтипа, которые были определены в родительском подтипе: subtypeID-fieldID вместо parenttypeID-fieldID

Т.е. в моем случае позволяет мне использовать pixel-pos_x и pixel-pos_y .

5
задан Harry Spier 23 December 2011 в 20:23
поделиться