[plt-scheme] polymorphism of primitive types
Yoav Goldberg wrote:
> I really want to stay with the traditional names, though.
>
> Can I have a module provide car, cdr etc without making it a new language?
> (I can see how redefining some of the primitive functions can be
> considered as a new language, and otoh I can also see how it is not).
If you squint, it is difficult to see the difference between requiring
a module and changing the language. In order words, don't be afraid do
something like this:
;;; mylist.ss
(module mylist mzscheme
(provide (rename cons mycons)
(rename car mycar))
(define mycons ...)
(define mycar ...))
)
;;; mymzscheme.ss
(module mymzscheme mzscheme
(require (prefix my: "mylist.ss"))
(provide (all-from-except mzscheme cons car ...)
(rename cons my:cons)
(rename car my:car)
...)
And then start all your modules with:
;;; foo.ss
(module foo "mymzscheme.ss"
...)
An alternative is to use a sequence datastructure that
behaves both like a list and a vector, for example
random access lists. I have attached list.ss from the
development version of Galore in case just in case.
--
Jens Axel Søgaard
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: list.ss
URL: <http://lists.racket-lang.org/users/archive/attachments/20051018/e044b2c6/attachment.ksh>