|
Silicon Valley Forth Intrest Group
4th.CoSy Presentation
2013 11 16
|
|
|
Notes gathered from around CoSy.com into web page for presentation
and examples executed in 4th.CoSy itself .
Unfortunately no decent video of the presentation got made .
4th.CoSyJust
time to Whet Your Appitite
, can chat later
Is a "Work in progress"
Technical skill is mastery of complexity, while creativity is mastery
of simplicity
Erik
Christopher Zeeman
APL
implements the simplicities needed to master complexities .
|
Another time when I was concerned about getting
credit for some idea I had,
[ Ken Iverson ] said, "Arthur, if it's a really good
idea,you're going to have to shove it down people's throats."
Arthur
Whitney : Memories of Ken
|
It
is better to have 100 functions operate on one data structure
than 10
functions on 10 data structures.
Alan Perlis
:
Epigrams in Programming #9
|
APL : MAXIMALLY EXPRESSIVE
NOTATION FOR SPECIFICATION
FORTH : MINIMAL VOCABULARY TO
CREATE EXTENSIBLE DICTIONARY |
Bit o History
- Learned APL in the mid '70s when realized needed to learn multidimensional geometry and Ken Iverson's APL generalized the algebra and made it executable .
- Learned of Forth in early '80s when saw Tron with some hardware tekies at Xerox . Pointed me to Byte special issue . Rochester relative hotbed of Forth .
|
|
Everyone with any
teky sense used the 68000 .
Among us , Ryu
Oosake was the most courageous pioneer . Around 1983 , probably steered
by Phil VanCleave , he contacted me about his plan to make an 68000
notebook with APL in ReadOnlyMemory . I remember suggesting to him he
also look to FORTH as the foundation of his environment .
Ryu came to New York from Tokyo , but we failed to get together because
of the last 250 miles . It is not at all clear that history would have
been different if we had.
|
BushWacking
- I don't know
how you are supposed to implement a language .
Never lived in C/UNIX .
- 4th.CoSy
is Interactive
language lab , breadboard
- Straddles
FORTH and Array Language
one Fn key executes as FORTH , one assumes CoSy
|
Generalized
Array Language
- Reference counted Lists
of lists (
a la Backus
Turing speech )
recursive data structures and associated vocabulary .
- Verbs & adverbs ( functions & operators ) acting on these lists .
- atomic verbs , eg : + * = , act on leaves ( atoms )
- adverbs generally mapping verbs to collections of lists , eg : each , eachleft , eachright , across , scan
- Modulo indexing ( -1 indexes last element ) unique to CoSy but I like it
- Objects
( defined by header ) . 4 cells
type |
count
|
bits %
item /
reference count |
meta |
<---
body of object
--->nbsp; |
- Dictionary
relation : list of 2 lists : ( symbols ; values )
NB : operators like each , etc , are definitionally parallel
The
enabling algorithms are the transformation of a reference counted
recursive allocated list of lists to a simple saveable list and back
again . The real bear is taming reference counts and decrementing and
freeing of all the leaves of recursive trees .
|
Goals
- Personal
Artificially Aided Intelligence
- Open
code from gate
arrays to data arrays
Language is a bush , not a horizon ; optimize by using vocabulary at
appropriate level
- Deal
with business
of life
(
which involves a lot of accounting and form filing )
|
Below are examples executed in 4th.CoSy during the demo with results copied down
from the result window in blue
| ======================== | Sat.Nov,20131116 | ======================== | | 0914 |
s" -=" 80 _take s" -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=" 10 _iota | _iota ( n -- integers<n ) 0 1 2 3 4 5 6 7 8 9
R0 i( 100 0 )i +i | R0 holds the result of the last execution 100 1 102 3 104 5 106 7 108 9 i( 1 0 0 0 )i i( 3 3 )i take | ( 1 0 0 0 1 0 0 0 1 )
R0 DMP | Executed w F6 .
| R0 holds last result DMP displays first 8
cells . address type count ~ rho refs | bits meta_addr 00313568 00 00 00 00 03 00 00 00 01 00|20 00 00 00 00 00 .......... ..... 00313578 90 C5 6F 02 C0 C5 6F 02 F0 C5 6F 02| 2F 5C 20 22 ..o...o...o./\ " item
0 item
1 item
2 junk
text> >t0> | grab this text and save in variable named t0 s" | ###################################################################### | | \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ | | ###################################################################### | revaver type | >| 7.0.10 R ` lastSave v@ R to _d help to
savetext saverestxt saveLastsave savedic | simple save | text> vm " aaply" con ... "
t0 rho | count of items ( characters ) 139051
t0 vm >t1> | split on "lf chars ( s" | ###################################################################### |" s" | \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ \/ | " s" | ###################################################################### | " s" revaver type | >| 7.0.10 " s" R ` lastSave v@ " s" R to _d" s" help to" s" " s" savetext saverestxt saveLastsave" s" savedic | simple save |" s" text> vm " aaply" con " ... )
t1 rho 3442
t1 ' rho eachM> ( 75 76 76 29 18 9 9 0 34 ... )
R0 ,/ 75 76 76 29 18 9 9 0 34 ...
R
lst
| R is the "Root" dictionary which gets saved to CoSy.csy file ( ( ` DIGITS ` LE ` help ` winbk ` IntroHelp ... ) ( s" 0123456789" 1.89999 1.27999 s" F1 Key Help
F5 Insert res at cursor F6 Eval line under cursor in text F7 CoSy evaluate ( experimental ) ... ) )
R 0 _at | 0th list is symbols ( ` DIGITS ` LE ` help ` winbk ` IntroHelp
` ToDo
... ` REFR.revenue ` Pi ` Tau ` text )
R ` ToDo v@ | Saved variable ` ToDo s" | ToDo | --------------------------------------- | GlassTables acnts MEJA 1041 | Ryan Keldsen , RECYCLES at 743 GOLD HILL PL S, | BadRock : steering , starvation | transmission ... "
s" 4th.CoSy " i( 11 31 )i take >t0> | Vidal Sasson demo ( s" 4th.CoSy 4th.CoSy 4th.CoSy 4th." s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy" s" 4th.CoSy 4th.CoSy 4th.CoSy 4th" s" .CoSy 4th.CoSy 4th.CoSy 4th.CoS" s" y 4th.CoSy 4th.CoSy 4th.CoSy 4t" s" h.CoSy 4th.CoSy 4th.CoSy 4th.Co" s" Sy 4th.CoSy 4th.CoSy 4th.CoSy 4" s" th.CoSy 4th.CoSy 4th.CoSy 4th.C" s" oSy 4th.CoSy 4th.CoSy 4th.CoSy " s" 4th.CoSy 4th.CoSy 4th.CoSy 4th." s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy" ) t0 t0 reverse ' cL each ( s" 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy" s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy4th.CoSy 4th.CoSy 4th.CoSy 4th." s" 4th.CoSy 4th.CoSy 4th.CoSy 4thoSy 4th.CoSy 4th.CoSy 4th.CoSy " s" .CoSy 4th.CoSy 4th.CoSy 4th.CoSth.CoSy 4th.CoSy 4th.CoSy 4th.C" s" y 4th.CoSy 4th.CoSy 4th.CoSy 4tSy 4th.CoSy 4th.CoSy 4th.CoSy 4" s" h.CoSy 4th.CoSy 4th.CoSy 4th.Coh.CoSy 4th.CoSy 4th.CoSy 4th.Co" s" Sy 4th.CoSy 4th.CoSy 4th.CoSy 4y 4th.CoSy 4th.CoSy 4th.CoSy 4t" s" th.CoSy 4th.CoSy 4th.CoSy 4th.C.CoSy 4th.CoSy 4th.CoSy 4th.CoS" s" oSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th" s" 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy" s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy4th.CoSy 4th.CoSy 4th.CoSy 4th." )
R0 R0 reverse cL ( s" 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy" s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy4th.CoSy 4th.CoSy 4th.CoSy 4th." s" 4th.CoSy 4th.CoSy 4th.CoSy 4thoSy 4th.CoSy 4th.CoSy 4th.CoSy " s" .CoSy 4th.CoSy 4th.CoSy 4th.CoSth.CoSy 4th.CoSy 4th.CoSy 4th.C" s" y 4th.CoSy 4th.CoSy 4th.CoSy 4tSy 4th.CoSy 4th.CoSy 4th.CoSy 4" s" h.CoSy 4th.CoSy 4th.CoSy 4th.Coh.CoSy 4th.CoSy 4th.CoSy 4th.Co" s" Sy 4th.CoSy 4th.CoSy 4th.CoSy 4y 4th.CoSy 4th.CoSy 4th.CoSy 4t" s" th.CoSy 4th.CoSy 4th.CoSy 4th.C.CoSy 4th.CoSy 4th.CoSy 4th.CoS" s" oSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th" s" 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy" s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy4th.CoSy 4th.CoSy 4th.CoSy 4th." s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy4th.CoSy 4th.CoSy 4th.CoSy 4th." s" 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy" s" oSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th" s" th.CoSy 4th.CoSy 4th.CoSy 4th.C.CoSy 4th.CoSy 4th.CoSy 4th.CoS" s" Sy 4th.CoSy 4th.CoSy 4th.CoSy 4y 4th.CoSy 4th.CoSy 4th.CoSy 4t" s" h.CoSy 4th.CoSy 4th.CoSy 4th.Coh.CoSy 4th.CoSy 4th.CoSy 4th.Co" s" y 4th.CoSy 4th.CoSy 4th.CoSy 4tSy 4th.CoSy 4th.CoSy 4th.CoSy 4" s" .CoSy 4th.CoSy 4th.CoSy 4th.CoSth.CoSy 4th.CoSy 4th.CoSy 4th.C" s" 4th.CoSy 4th.CoSy 4th.CoSy 4thoSy 4th.CoSy 4th.CoSy 4th.CoSy " s" CoSy 4th.CoSy 4th.CoSy 4th.CoSy4th.CoSy 4th.CoSy 4th.CoSy 4th." s" 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy 4th.CoSy" )
| ###################################################################### | | ###################################################################### | | ###################################################################### |
|
|
|
|