POW POW POW_HELPER ACC POW_HELPER POW_HELPER ACC_POW VAR ACC_POW VAR I

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
# X N POW
; : POW 1 POW_HELPER //;
# X N ACC POW_HELPER
; : POW_HELPER
'ACC_POW' VAR ->ACC_POW
'N' VAR ->N
@N =0 IFTHEN
DROP
@ACC_POW
ELSE
DUP
@ACC_POW *
@N 1 -
SWAP
POW_HELPER
ENDIF //;
# @ACC PRINT
; : PRINT . DROP; //;
; : MAJEDOC 0 MAJEDOC_HELPER //;
# 'ab' 'aaa' 0
# AL STR ACC
; : MAJEDOC_HELPER
'ACC_MAJ' VAR ->ACC_MAJ
'STR' VAR ->STR
'LEN' VAR
@STR LENGTH ->LEN
'AL' VAR ->AL
@LEN =0 IFTHEN
@ACC_MAJ
ELSE
'C' VAR
@STR 0 1 SUBSTR ->C
'LEFT' VAR
@STR 1 @LEN SUBSTR ->LEFT
@AL @C POS
@AL LENGTH
@STR LENGTH 1 -
POW
*
@ACC_MAJ + ->ACC_MAJ
@AL @LEFT @ACC_MAJ MAJEDOC_HELPER
ENDIF //;