В языке логотипа cascade
- это процедура, чтобы составлять функцию с собой несколько раз (это почти как fold
в функциональном языке).
Пример:Каскад в Реболе
add 4 add 4 add 4 5 --> cascade 3 [add 4 ?1] 5 == 17
2^8 --> cascade 8 [?1 * 2] 1
fibonacci 5 --> (cascade 5 [?1 + ?2] 1 [?1] 0)
factorial 5 --> (cascade 5 [?1 * ?2] 1 [?2 + 1] 1)
Общие обозначения для нескольких входных каскада, в Логотип:
(каскад сколько function1 start1 function2 start2 ...) с:
function1 -> ?1 ,
function2 -> ?2 ...
Каскад возвращает окончательное значение of 1.
В Rebol:
cascade1: func [howmany function1 start1] [....]
cascade2: func [howmany function1 start1 function2 start2] [....]
Как написать cascade1 и cascade2 в Rebol?
Мне это очень нравится, и я буду добавлять его в свой швейцарский армейский нож REBOL 3, который вы можете найти на https://github.com/Revolucent/rebol. Обратите внимание, что это модули REBOL 3. –