Re: Refal interpreter


Subject: Re: Refal interpreter
From: A.A.Vladimirov (vladimi@mech.math.msu.su)
Date: Mon Jan 24 2005 - 14:08:37 MSK


В Сбт, 22/01/2005 в 21:28 +0200, Leonid Belous пишет:
> Здравствуйте, Антон!
>
> Правильно ли я понял, что встроенные арифметические функции в Вашей реализации
> (add,sub,mul,div,div,mod)пока не расчитаны на произвольноразрядную целую арифметику?

Неправильно поняли. Расчитаны ;)

>
> Если я неправ насчет нереализованности произвольноразрядной целой арифметики, то
> был бы благодарен за правильно написанный для Вашей реализации пример программы
> рекурсивного вычисления факториала, на котором интересно было бы оценить эффективность
> Вашей чистой интерпретации.
>

Приложено.

С уважением,
Антон Владимиров

#!/usr/bin/refal
$use 'stdio'
$use 'arithm'

$start k/puts/k/symb/k/faktorial/ k/numb/k/gets/.... 10.

symb s/1/ = k/symb/ () s/1/.
        (e/1/) 0 = e/1/
        (e/1/) s/2/ = k/symb/ (k/add/k/mod/ s/2/ 10. 48. e/1/) k/div/ s/2/ 10..
        () 0 = 48

numb (s/1/) s/2/ e/3/ = k/numb/ (k/add/ k/mul/ 10 s/1/. k/sub/ s/2/ 48..) e/3/.
        (s/1/) = s/1/
        e/1/ = k/numb/ (0) e/1/.

faktorial s/1/ = k/faktorial/1 s/1/.
        s/1/ 0 = s/1/
        s/1/ s/2/ = k/faktorial/ k/mul/s/1/ s/2/. k/sub/ s/2/ 1..



This archive was generated by hypermail 2b25 : Mon Jan 24 2005 - 14:09:27 MSK