Tags: iigura/Paraphrase
Tags
Release Notes: Changes from ver. 0.92 to 0.93 1. Language changes * Added local variables * Added tail recursion optimization * Added restrictions on symbolization with backquotes On the version 0.93, the language system changes made it impossible that it can not create Symbols by using back quote if the first character does not start with a half-width alphabet or underscore. However, in the List as with the previous version, even one character other than the underbar can be converted into Symbol. * It is a topic about the implementation method; the new version of Paraphrase have added stack for syntax check (Syntax Stack = SS) 2. Changes to existing Words * If an error occurs during word definition, information on the calling word is displayed. * Changed to do syntax check at the Word ';' * Changed definable word names to begin with something other than '$' Words starting with '$' are used for variable access Words. * 'do' and 'loop' are abolished (change to for+ ... next or for- ... next) * The Word '==' supports List (returns true only if there is an exact match) * Debugging of comparison operators (resolved a problem that occurred when double or float were compared) * Changed to handle division by 0 as an error in the Word '/' and '%' * Clarification of specifications of comparison between BigInt and BigFloat The behavior at the time of comparison with BigInt exceeding the limit of BigFloat is undefined. It is recommended not to compare these because there is a possibility falls by exception handling may occur. * printf supports Symbols (supports local variables) * Improving printf performance (suppressioning cloning process in printf) * Changed to the Word 'pick' 's behavior to be the same as Forth In the new version, 0 pick is equivalent to 'dup', and 1 pick is equivalent to 'over'. * '${' is abolished In ${ ... }, only TOS was literalized, so in some cases unintended results (See also the description of the Words '}}' added in this release). 3. Change of name * changed 'and' to '&&' and 'or' to '||' * 'var' to 'global' * 'size' to '@SiZe' The new version also supports strings and symbols. * 'car' to '@CAR', 'cdr' to '@cdr' * '>sym' to '>here' The old ">sym" crashed when the number 1 was converted to a symbol, but the new name version is debugged done so as not to crash at ">here". 4. Newly added Words * .cr * @+ @- @* @/ * @> @< @>= @<= @== @!= * @& @| @^ @>> @<< @~ * @de-list, @last * ->> interactive? * }} def forget * abs vmap and or >str >symbol * local local-with let show-local-vars * , * @ * filter sort+ sort- args car cdr * has? @Has? in? @in? * j foreach * replace 2drop 3drop * size square quit exit * thru utf8>sjis sjis>utf8 ccc-str 5. About the interpreter 'para'. * Fixed error messages mixture under multi-thread execution * Changed interpretation of command line parameters In previous versions, the parameter 1 was interpreted as the string "1". From now on, it is interpreted as the numerical value 1. * See 'para.html' for more details on command line options 6. About the included sample programs * Added sample program PE56.pp to calculate Project Euler No.56 PE56 is a program that calculates the maximum sum of numbers in each digit when a and b are numbers from 1 to less than 100 and a ^ b is expressed in decimal. * Added tail-recursive sample program "fact-tr.pp" * Fixed to output Japanese correctly under Windows environment * Removed test-* files (because driver programs now can be written on the command line)
ver. 0.9.3 -> 0.91.0 BUGFIX: * Support big-int counter at for-next loop. * Fixed a problem that hexadecimal number starting with 0x becomes big-int. * Added the code '{ > } sort' into README.md. CHANGE: * Changed behavior of the Word '->'. The current version execute the 'drop'. The code in the switch - case block can be simplified. MISC: * Added a new sample code: PE25.pp.
PreviousNext