Thanks a lot Caner. This is what I want exactly.
On Wed, Oct 26, 2016 at 5:34 PM Caner Derici <[email protected]> wrote:
This is probably not a very good idea for numerous reasons, but here's
one way to do that:
(just extend the 'define' to set! things that are already bound)
#lang racket
(require
(rename-in racket/base [define define-original])
(for-syntax syntax/parse))
(define-syntax (define stx)
(syntax-parse stx
[(define i:id v:expr) (if (identifier-binding #'i)
#'(set! i v)
#'(define-original i v))]
[(define (f:id arg:id ...) body ...)
(if (identifier-binding #'f)
#'(set! f (lambda (arg ...) body ...))
#'(define-original (f arg ...) body ...))]))
(define (func x) 3)
(define (func a b) b)
(define x 4)
(define x 2)
Cheers!
-- caner
On 10/26/2016 07:41 AM, İlker Kesen wrote:
> Hi,
>
> I want to allow redefinition of already defined expressions (variables,
procedures etc.), but Racket prevents me. I know, in DrRacket I can allow
it via graphical preferences interface for Pretty Big and R5RS languages.
However, I want to allow that operation in racket and sicp languages, too.
There's no option for those languages in that graphical interface and no
documentation, too (at least I couldn't have found). My question is, how
can I do that? I want to allow multiple re-definitions over and over again,
not just for once. Here, I attach an example and it's output.
>
> Thanks in advance.
>
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an
email to [email protected].
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.