Type of Define expression in Scheme

前端 未结 1 1649
耶瑟儿~
耶瑟儿~ 2021-01-05 13:11

To put it simply: My question is whats is the type of a define expression in Scheme?

Take for example:

(define x 5)

or

<         


        
相关标签:
1条回答
  • 2021-01-05 13:37

    In Racket define is a special form and not an expression, so it doesn't have a value per-se, if you try to execute something like this you'll get an error:

    (display (define x 42))
    =>  define: not allowed in an expression context in: (define x 42)
    

    If it were to have a value it'd be something akin to void, but that will be dependent on the particular implementation details of the interpreter (I believe I saw one interpreter return #t after a define was completed)

    The constant #<void> is returned by most forms and procedures that have a side-effect and no useful result

    The specification doesn't go into details on this point, either - reinforcing the statement that it's implementation-dependent.

    0 讨论(0)
提交回复
热议问题