Viivi 00.17 release notes < Logs of Viivi < Viivi's Cell < Entrance
Version 00.17.01 has been improved at the following points compared to
the previous version 00.16.00.
define
and set!
applied to the "system-predefined symbols" were corrected.define
define
overrides
the binding of a system-predefined symbol at the top-level.set!
set!
was enabled to override the bindings of the system-predefined symbols.define
,
a warning message is shown
when the procedure set!
overrides the binding of a system-predefined symbol.
[Examples]
> (define cos +) ;; cos is a system-predefined symbol
/// >>Warning<<
/// The procedure #<procedure:define> overrode the binding of the system-predefined symbol cos with the new value #<procedure:+>.
/// Continuing the process...
#<unspecified>
> (let ((sin #f)) (define tan /) (tan 30)) ;; No warning messages are shown here, as tan is bound in the local scope of let.
1/30
> (let ((sin #f)) (set! tan -) (tan 30)) ;; tan is a system-predefined symbol
/// >>Warning<<
/// The procedure #<procedure:set!> overrode the binding of the system-predefined symbol tan with the new value #<procedure:->.
/// Continuing the process...
-30
> (let ((sin #f)) (set! sin sqrt) (sin 30)) ;; No warning messages are shown here, as sin is a local symbol of let.
5.477225575051661
>
Viivi 00.17 release notes < Logs of Viivi < Viivi's Cell < Entrance
Exhibited on 2012/08/18
Updated on 2022/03/02
Copyright(C) 2003-2022 ilma <ilma@viivi.io> All rights reserved.