RosettaCodeData/Task/First-class-environments/Bracmat/first-class-environments.br...

35 lines
780 B
Plaintext

( (environment=(cnt=0) (seq=))
& :?environments
& 13:?seq
& whl
' ( !seq+-1:>0:?seq
& new$environment:?env
& !seq:?(env..seq)
& !env !environments:?environments
)
& out$(Before !environments)
& whl
' ( !environments:? (=? (seq=>1) ?) ?
& !environments:?envs
& whl
' ( !envs:(=?env) ?envs
& (
' ( $env
(
=
. put$(!(its.seq) \t)
& !(its.seq):1
| 1+!(its.cnt):?(its.cnt)
& 1/2*!(its.seq):~/?(its.seq)
| 3*!(its.seq)+1:?(its.seq)
)
)
.
)
$
)
& out$
)
& out$(After !environments)
)