TWiki . Doc . CodeExamples

This section is a repository for code fragments and programs, for illustration purposes. Please create a specific page for each example. Its WikiWord should end with the word Example.

Examples for novices

HelloWorldNoviceExample: Setup, compile and run Hello World.

FiboNoviceExample: Setup, compile and run Fibonacci function.

ScissorsPaperRockNoviceExample: Setup, compile and run the Scissors Paper Rock multimethod implementation.

Download Language Shootout Examples 25 simple example programs (See The Great Computer Language Shootout )

Multimethod Examples

FiniteStateMachineMultiMethodExample: A simple Finite State Machine encoded directly with multimethods.

BinaryMethodsMultiMethodExample: Multimethods provide a straightforward solution to the problem of binary methods.

BuilderPatternMultiMethodExample: For performance testing, the Runabout project generates various styles of test code - Visitor, Test Case, Multi Java, Runabout etc. In Java, this kind of generator code is often written using the BuilderPattern; in Nice, multimethods provide a straightforward solution.

VisitorPatternMultiMethodExample: We'd like to reuse and extend software without modification. There are two aspects: adding a new datatype, usable with existing operations; and adding new operations for existing datatypes. This example follows the discussion in "Synthesizing Object-Oriented and Functional Design to Promote Reuse" from Functional and OO (Composite Pattern) approaches, to the Visitor Pattern and Extensible Visitor Pattern; with the addition of a straightforward implementation using multimethods and open classes.

AspectOrientedMultiMethodExample: Nice multimethods provide capabilities similar to AOP static crosscutting. Here's the Nice version of the Email example listings in "AOP banishes the tight-coupling blues".

Parametric Type Examples

NumberFiveParametricTypeExample: Subtype constraints on type parameters < T | T <: double, int <: T >

RecursiveParametricTypeExample: Shapes within Shapes.

GraphParametricTypeExample: Generic implementations of graph algorithms from the Boost Graph Library - Breadth First Search, Dijkstra Shortest Paths, Prim's Minimum Spanning Tree, Bellman Ford Shortest Paths, Johnson All-Pairs Shortest Paths. Compare with C++, ML, Haskell, Eiffel, Java Generics, Generic C# implementations in "A Comparative Study of Language Support for Generic Programming".

Java Reuse Examples

MethcallIntermediateExample: Define a Java class JavaToggleExample and subclass it in Nice, compile Nice using classes in a Java jar, setup a Nice executable archive classpath to find a Java jar - compare with MethcallBeginnerExample.

MethcallIntermediateTwoExample: Define a Nice class NiceToggleExample and subclass it in Java - compare with MethcallBeginnerExample.

User Interface Examples

HelloSwtUserInterfaceExample: Simple SWT UI event handling (requires swt.jar).

HelloSwingWorld : Shows how to write a graphical helloworld program

CSP Concurrency Examples

SimpleProducerConsumerCspExample: Simple multithreaded programming using CSP primitives from the JCSP library.

PowerSeriesCspExample: Normally JCSP processes are defined, created; and then they are all started at the same time. In this case, we spawn new processes as needed while the other processes are running. See "Squinting at Power Series".

Benchmark Examples

TreeVisitorIntermediateExample: Benchmark comparison between the Java Extensible Visitor pattern and modular extension in Nice. Simple generic binary tree TreeVisitorClassesIntermediateExample extended with a subclass representing n-ary trees, and with 3 different external methods.

DispatchIntermediateExample: Benchmark comparison between typecase and double-dispatch in Java, and multiple dispatch in Nice.

BenchIntermediateExample: Martin Richards systems language benchmark Bench, written in an ordinary OO style. PacketBenchExample declares enums, TcbBenchExample uses a class initializer, SchedulerBenchExample misuses enum.hashCode, TaskBenchExample declares an interface. "Benchmarking Java with the Richards benchmark" provides some background information.

Functional Programming Examples

HaskellPreludeExample: Selected parts of the Haskell prelude, lots of functions which are useful when programming in functional style.

LazyVectorExample: A Vector subclass which computes its elements as they are they requested.

----- Revision r1.55 - 08 Mar 2005 - 10:05 GMT - TWikiGuest
Copyright © 1999-2003 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback.