a function object that can be cast to any function type, and throws when invoked


The abstract keyword is used to declare interfaces that will be implemented by derived types. This information is also used by the compiler to detect attempts to instantiate types with abstract members.


//Base type
Animal := type {
	<Void → Void> speak ← abstract; //there is no default implementation

//Derived type
Cat := type inheriting Animal {
	speak ← { Meow(); }; //override the inherited speak method

<List<Animal> → Void> choir := (animals) {    
	for (animal in animals) {

<Cat> bernard;
<Cat> russel;
List<Cat> kittehs := [ bernard, russel ];
choir(kittehs); //covariant argument

This website does not use cookies or javascript, excluding the Google search bar and Google analytics.
copyright © Brent Lewis 2013-2018