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")))))) `}