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 class's linearized ancesters from its parents.

 	
(dm class-ordered-ancestors (c| => )
  (def parents (class-parents c))
  (rep merge-lists
      ((partial-cpl|     
         (lst c)) 
       (remaining-lists| 
         (add (map class-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.

Goo Programming Language