Standard Meta Language

Standard Meta Language

Standard ML (SML) ist eine von ML abstammende funktionale Programmiersprache mit einigen imperativen Merkmalen (zum Beispiel im Bereich File IO).

ML-Schöpfer Robin Milner schlug SML 1983 vor, um die verschiedenen Dialekte von ML zu standardisieren. Die Sprache wurde von 1984 bis 1988 entwickelt und schließlich 1990 von Robin Milner, Mads Tofte und Robert Harper formalisiert. 1997 wurde mit SML'97 eine Revision der Sprache veröffentlicht, die neben einigen Vereinfachungen auch eine SML-Basisbibliothek enthält.

Wichtige Merkmale von SML sind unter anderem die statische Typisierung, Polymorphie auf Funktions- und Datentypsebene, automatische Speicherbereinigung sowie strenge Auswertung und Ausnahmebehandlung. Außerdem unterstützt SML Funktionen höherer Ordnung, Module und sogenannten Funktoren, die hier parametrisierte Datentypen bezeichnen.

Eine Besonderheit von SML ist, dass die Sprache vollständig formal definiert ist. Dadurch können wichtige Eigenschaften der Sprache mathematisch bewiesen werden.

Inhaltsverzeichnis

Programmbeispiele

Rekursive Berechnung der Fakultät

Die Fakultät einer natürlichen Zahl kann man in SML mittels folgendes Programmes berechnen:

fun fak (n) = if n < 1 then 1 else n * fak (n-1)

Rekursive Berechnung der Fibonacci Zahlen

Die n-te Fibonacci-Zahl kann man in SML mittels folgenden Programms berechnen:

fun fib (n) = if n < 2 then 1 else fib(n-1) + fib(n-2)

Die Stelligkeit einer Zahl

fun stell (x:int) = if x<1 then 0 else stell(x div 10) + 1

Die Quersumme einer Zahl

fun quer (x:int) = if x<1 then 0 else quer(x div 10) + x mod 10

Die Faltungsprozedur foldl für Listen

fun foldl f s nil = s
| foldl f s (x::xr) = foldl f (f(x,s)) xr

Das Umwandeln eines Strings, der eine Zahl darstellt, zu Int

fun toInt x = foldl(fn(i,k)=>ord(i)-ord #"0" + k*10) 0 (explode x)

Insertsort

fun insert (x, nil) = [x]
| insert (x, y::yr) = if x<=y then x::y::yr else y::insert(x,yr)
fun isort xs = foldl insert nil xs

Mergesort

fun split xs = foldl (fn(i, (ys,zs)) =>(zs, i::ys)) (nil,nil) xs
fun merge (xs,nil) = xs
| merge (nil,ys) = ys
| merge (x::xr,y::yr) = if x<=y then x::merge(xr,y::yr) else y::merge(x::xr,yr)
fun mergesort nil = nil
| mergesort [x] = [x]
| mergesort xs = let val (ys,zs) = split(xs) in merge(mergesort ys, mergesort zs) end


Weblinks

Es existieren verschiedene Compiler für SML, die entweder Bytecode oder Maschinencode generieren. Die Referenzimplementierung ist SML/NJ. Sml2c ist ein besonderer Compiler, der SML in C Code übersetzt.

Literatur

  • Robin Milner, Mads Tofte, Robert Harper, D. MacQueen: The Definition of Standard ML (Revised). MIT Press, 1997, ISBN 0262631814 (offizielle Sprachdefinition). 
  • Gert Smolka, “Programmierung - eine Einführung in die Informatik mit Standard ML”, 2008. München, Oldenbourg Wissenschaftsverlag, ISBN 978-3-486-58601-5

Wikimedia Foundation.

Игры ⚽ Нужно решить контрольную?

Schlagen Sie auch in anderen Wörterbüchern nach:

  • Meta language — ML (langage) ML (contraction de Meta Language) est un langage de programmation généraliste fonctionnel Histoire ML fut initialement développé par Robin Milner et d autres personnes dans les années 1980 à l Université d Edimbourg, pour le système… …   Wikipédia en Français

  • Information Economy Meta Language — (IEML, fr.:métalangage de l économie de l information) est un langage informatique. L’initiative IEML (Information Economy Meta Language) a été lancée en 2006 par Pierre Lévy à partir de la Chaire de Recherche du Canada en Intelligence Collective …   Wikipédia en Français

  • Extensible Binary Meta Language — Infobox file format name = Extensible Binary Meta Language icon = extension = mime = magic = 1a 45 df a3 type code = uniform type = owner = genre = container for = contained by = extended from = extended to = Matroska standard = Extensible Binary …   Wikipedia

  • Meta element — Meta elements are the HTML or XHTML <meta … > element used to provide structured metadata about a Web page. Multiple elements are often used on the same page: the element is the same, but its attributes are different. Meta elements can be… …   Wikipedia

  • META Tag — Meta Tags sind HTML Elemente auf einer Webseite, die Metadaten über das betreffende Dokument enthalten. Inhaltsverzeichnis 1 Allgemein 2 Beispiele 2.1 Seitenbeschreibung 2.2 Stichwörter 2.3 …   Deutsch Wikipedia

  • Meta-Tag — Meta Tags sind HTML Elemente auf einer Webseite, die Metadaten über das betreffende Dokument enthalten. Inhaltsverzeichnis 1 Allgemein 2 Beispiele 2.1 Seitenbeschreibung 2.2 Stichwörter 2.3 …   Deutsch Wikipedia

  • Meta-Tags — sind HTML Elemente auf einer Webseite, die Metadaten über das betreffende Dokument enthalten. Inhaltsverzeichnis 1 Allgemein 2 Beispiele 2.1 Seitenbeschreibung 2.2 Stichwörter 2.3 …   Deutsch Wikipedia

  • Meta Tags — sind HTML Elemente auf einer Webseite, die Metadaten über das betreffende Dokument enthalten. Inhaltsverzeichnis 1 Allgemein 2 Beispiele 2.1 Seitenbeschreibung 2.2 Stichwörter 2.3 …   Deutsch Wikipedia

  • Standard Chinese phonology — The phonology of Standard Chinese is reproduced below. Actual production varies widely among speakers, as people inadvertently introduce elements of their native dialects. By contrast, television and radio announcers are chosen for their… …   Wikipedia

  • Meta-object facility — Le Meta Object Facility (MOF) est un standard de l OMG s intéressant à la représentation des métamodèles et leur manipulation. Le langage MOF s auto définit. Le standard MOF est situé au sommet d une architecture de modélisation en 4 couches: M3 …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”