2022-10-25 11:59:21 +02:00
|
|
|
# New Words
|
|
|
|
|
|
|
|
This contains a variety of words from my more recent systems.
|
|
|
|
|
|
|
|
Notes:
|
|
|
|
|
|
|
|
`aa:` is a new set of array words. These will be replacing the
|
|
|
|
existing set in the future.
|
|
|
|
|
2022-08-31 04:05:48 +02:00
|
|
|
~~~
|
2022-09-06 16:29:32 +02:00
|
|
|
'NextArray var
|
2022-11-29 16:52:56 +01:00
|
|
|
:arrays FREE #513 #12 n:mul n:sub ;
|
2022-09-06 16:29:32 +02:00
|
|
|
|
|
|
|
|
|
|
|
:aa:temp (a-a) @NextArray dup #12 [ drop #0 dup !NextArray ] if
|
2022-11-29 16:52:56 +01:00
|
|
|
#513 n:mul arrays n:add over a:length n:inc copy
|
|
|
|
@NextArray #513 n:mul arrays n:add
|
2022-09-06 16:29:32 +02:00
|
|
|
&NextArray v:inc ;
|
|
|
|
|
2022-08-31 04:05:48 +02:00
|
|
|
:aa:make (...n-a) here [ dup comma &comma times ] dip ;
|
|
|
|
|
|
|
|
:aa:map
|
|
|
|
swap [ fetch-next [ [ fetch over call ] sip
|
|
|
|
&store sip n:inc ] times
|
|
|
|
drop-pair ] sip ;
|
|
|
|
|
|
|
|
{{
|
|
|
|
'Count var
|
|
|
|
:prepare #0 &Count store ;
|
|
|
|
:reserve swap #0 comma ;
|
|
|
|
:patch here over n:sub n:dec over store ;
|
|
|
|
:cleanup dup s:temp swap &Free store ;
|
|
|
|
:match? over eq? ;
|
|
|
|
:record &Count fetch comma ;
|
|
|
|
:iterate [ match? &record if &Count v:inc ] a:for-each ;
|
|
|
|
---reveal---
|
|
|
|
:aa:indices (av-a)
|
|
|
|
prepare here [ reserve iterate drop ] dip patch cleanup ;
|
|
|
|
}}
|
|
|
|
|
|
|
|
:aa:index (av-n) [ aa:indices #0 a:fetch ] gc ;
|
|
|
|
|
|
|
|
:aa:contains? (an-f)
|
|
|
|
swap #0 swap [ swap [ over eq? ] dip or ] a:for-each nip ;
|
|
|
|
|
|
|
|
:aa:first (a-n) #0 a:fetch ;
|
2023-01-15 23:09:35 +01:00
|
|
|
:aa:last (a-n) dup a:length n:dec a:fetch ;
|
2022-09-06 16:29:32 +02:00
|
|
|
|
2022-10-25 11:59:21 +02:00
|
|
|
|
2022-11-29 16:56:55 +01:00
|
|
|
:aa:hash (a-n) #5381 swap [ swap #33 n:mul n:add ] a:for-each ;
|
2022-10-25 11:59:21 +02:00
|
|
|
|
|
|
|
:aa:eq? (aa-f) aa:hash swap aa:hash eq? ;
|
|
|
|
:aa:-eq? (aa-f) aa:hash swap aa:hash -eq? ;
|
|
|
|
|
2023-01-15 23:09:35 +01:00
|
|
|
:a:dup here [ dup a:length comma &comma a:for-each ] dip ;
|
2022-08-31 04:05:48 +02:00
|
|
|
~~~
|