Goo Programming Language Help For Students
Introduction to Goo
Goo is an object-oriented and lexically scoped programming language. It is designed to be simple, productive, powerful, extensible, dynamic, efficient and real-time. It heavily leverages features from many earlier languages. GOO's main goal is to offer the best of both scripting and delivery languages while at the same time incorporating an extreme back-to-basics philosophy. GOO is a dynamic type-based object-oriented language. It is designed to be simple, productive, powerful, extensible, dynamic, efficient and real-time. It heavily leverages features from many earlier languages. In particular, it attempts to be a simpler, more dynamic, lisp-syntaxed Dylan and an object-oriented Scheme.
Example: Algorithm for computing a className's linearized ancesters from its parents.
{`
(dm className-ordered-ancestors (c| => )
(def parents (className-parents c))
(rep merge-lists
((partial-cpl|
(lst c))
(remaining-lists|
(add (map className-ancestors parents) parents)))
(if (all? nul? remaining-lists)
(rev! partial-cpl)
(loc ((candidate (c)
(loc ((tail? (l|) (mem? (tail l) c)))
(and (not (any? tail? remaining-lists)) c)))
(candidate-at-head (l|)
(and (not (nul? l)) (candidate (head l)))))
(def next (any? candidate-at-head remaining-lists))
(if next
(loc ((del-next (l|)
(if (== (head l) next) (tail l) l)))
(merge-lists
(pair next partial-cpl)
(map del-next remaining-lists)))
(error "inconsistent precedence graph"))))))
`}
Compiler Download
To get started, see Download and install Goo and follow the instructions.



