home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / sml.zip / smlref.inf (.txt) < prev   
OS/2 Help File  |  1993-08-05  |  18KB  |  484 lines

  1.  
  2. ΓòÉΓòÉΓòÉ 1. Eine kleine Referenz f╨ær Standard ML ΓòÉΓòÉΓòÉ
  3.  
  4.  Es folgt eine kurze Darstellung der Grundlagen von SML in Anlehnung an 
  5. "Functional Programming Using Standard ML" von ╨ƒ. Wikstr╨ñm und "ML Primer" vin 
  6. Ryan Stansifer. 
  7.  
  8.  Der Text ist dennoch selbst formuliert, Garantien f╨ær die Richtigkeit k╨ñnnen 
  9. nicht ╨æbernommen werden. Sollte jemand Fehler finden, w╨ærde ich mich freuen, 
  10. wenn er mir diese mitteilt, damit ich sie in einer zuk╨ænftigen Version 
  11. beseitigen kann. 
  12.  
  13.  
  14. ΓòÉΓòÉΓòÉ 1.1. Die Sprache ΓòÉΓòÉΓòÉ
  15.  
  16.  Standard ML (im folgenden: SML oder ML) ist eine funktionale Sprache (wie 
  17. Lisp, Haskell), strongly typed (wie C++, nicht wie Smalltalk) und ohne lazy 
  18. evaluation (nicht wie Miranda, Haskell). ML hat keine echten objektorientierten 
  19. Elemente (wie - glaube ich - Haskell von sich behauptet). ML ist keine reine 
  20. funktionale Sprache (wie FP), da Seiteneffekte m╨ñglich sind, und Referenzen 
  21. gebildet werden k╨ñnnen. 
  22.  
  23.  ML hat viele moderne Sprachelemente, wie 
  24.  
  25.  1. Pattern matching 
  26.  
  27.  2. Exception handlling 
  28.  
  29.  3. Polymorphismus 
  30.  
  31.  4. Rekursive Datenstrukturen 
  32.  
  33.  
  34. ΓòÉΓòÉΓòÉ 1.2. Basistypen ΓòÉΓòÉΓòÉ
  35.  
  36.  Dieser Abschnitt beschreibt die grundlegenden Datentypen int, real und string. 
  37.  
  38.  
  39. ΓòÉΓòÉΓòÉ 1.2.1. unit ΓòÉΓòÉΓòÉ
  40.  
  41.  Der Datentyp unit ist der einfachste in SML. Es gibt genau ein Element n╨ömlich 
  42. (). 
  43.  
  44.  
  45. ΓòÉΓòÉΓòÉ 1.2.2. bool ΓòÉΓòÉΓòÉ
  46.  
  47.  Boolesche Werte werden mit dem Datentyp bool ausgedr╨æckt. Es gibt (nat╨ærlich) 
  48. genau zwei Werte, n╨ömlich true und false. S╨ömtliche Vergleichsoperatoren 
  49. <,>,>=,=,... liefern bool. Logische Verkn╨æpfungen gestatten die operetoren 
  50. andalso, sowie orelse. 
  51.  
  52.  
  53. ΓòÉΓòÉΓòÉ 1.2.3. int ΓòÉΓòÉΓòÉ
  54.  
  55. Integer sind 32-Bit breite ganze Zahlen. Beispiel: 2:int. Negative Zahlen 
  56. werden mit ~ dargestellt. Beispiel: ~3. 
  57.  
  58. Standardfunktionen: 
  59.  
  60. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  61. Γöédiv            Γöéganzzahlige Division          Γöé
  62. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  63. Γöémod            ΓöéRest der Division             Γöé
  64. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  65. Γöéabs            ΓöéAbsolutbetrag der Zahl        Γöé
  66. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  67.  
  68.  
  69. ΓòÉΓòÉΓòÉ 1.2.4. real ΓòÉΓòÉΓòÉ
  70.  
  71. Real stellt Gleitkommazahlen dar. Beipiel: ~3.14:real. ~ bezeichnet das 
  72. negative Vorzeichen. 
  73.  
  74.  Standardfunktionen: 
  75.  
  76. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  77. Γöéfloor          Γöéabrunden (real->int)          Γöé
  78. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  79. Γöésqrt           ΓöéQuadratwurzel                 Γöé
  80. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  81. Γöéabs            ΓöéAbsolutbetrag der Zahl        Γöé
  82. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  83.  
  84.  
  85. ΓòÉΓòÉΓòÉ 1.2.5. string ΓòÉΓòÉΓòÉ
  86.  
  87. Strings werden in doppelten Anf╨æhrungszeichen eingeschlossen. Bsp.: "hello, 
  88. world":string. Einzelne Zeichen werden als String der L╨önge 1 dargestellt. Es 
  89. k╨ñnnen C-Escape-Sequenzen angegeben werden. z.B. "\n"; 
  90.  
  91.  Standardfunktionen: 
  92.  
  93. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  94. Γöéord            ΓöéUmwandeln des ersten Zeichens in ASCII Wert (string->int)   Γöé
  95. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  96. Γöéchr            ΓöéUmwandeln einer Zahl in ASCII-Zeichen (int->string)         Γöé
  97. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  98. Γöésize           ΓöéL╨önge des Strings                                           Γöé
  99. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  100. Γöé^              ΓöéVerkettung zweier Strings (s1^s2;)                          Γöé
  101. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  102. Γöé<,>,=,...      Γöé Vergleich zweier Strings                                   Γöé
  103. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  104. Γöémakestring     ΓöéErzeugt String des Ausdrucks (makestring(2+3);)             Γöé
  105. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  106. Γöéexplode        ΓöéErzeugt eine Liste mit Strings ("hi" > ["h","i"])           Γöé
  107. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  108. Γöéimplode        ΓöéGegenteil von explode (["he","llo"] > "hello")              Γöé
  109. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  110.  
  111.  
  112. ΓòÉΓòÉΓòÉ 1.3. Paare und n-Tupel ΓòÉΓòÉΓòÉ
  113.  
  114.  n-Tupel werden dargestellt runde Klammern, in denen die Elemente durch Kommata 
  115. voneinander getrennt sind. Bsp.: (5,true,false). 
  116.  
  117.  Strengenommen wird auf diese Weise ein Konstruktor (pair constructor) 
  118. bezeichnet, der ein Tripel mit den Datenelementen 5, true und false erzeugt. 
  119. Der Datentyp des Tripels wird in diesem Fall mit int*bool*bool beschrieben. Auf 
  120. diese Weise wird ein neuer Datentyp der Form int*bool*bool erzeugt, weshalb der 
  121. *-operator auch type constructor genannt wird. Den neuen Datentypen kann man 
  122. als das Kartesisches Produkt int x bool x bool auffassen. 
  123.  
  124.  Standardfunktionen: 
  125.  
  126. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  127. Γöé#n             Γöéliefert das n. Element des Tuples (z.B. Γöé
  128. Γöé               Γöé#2 (1,2,3);)                            Γöé
  129. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  130.  
  131.  Weitere Operationen mit Tupeln unter Pattern Matching 
  132.  
  133.  
  134. ΓòÉΓòÉΓòÉ 1.4. Records ΓòÉΓòÉΓòÉ
  135.  
  136.  Records sind den Tupeln ╨öhnlich, jedoch sind die Elemente benannt. Records 
  137. werden mit geschweiften Klammen geschrieben. Z.B.  {name=hugo, groesse=186, 
  138. gewicht=80}; Eine Funktion kann dann die folgende Gestalt haben:  fun 
  139. uebergewicht {name,groesse,gewicht}=gewicht+100>groesse; 
  140.  
  141.  
  142. ΓòÉΓòÉΓòÉ 1.5. Listen ΓòÉΓòÉΓòÉ
  143.  
  144.  Eine Liste ist eine geordnete Sequenz von Elementen gleichen Typs. Dargestellt 
  145. wird eine Liste mithilfe eckiger Klammern. [2,4,6] bezeichet eine Liste des 
  146. Typs int list. [] bzw. nil bezeichnen die leere Liste. 
  147.  
  148.  Standardfunktionen: 
  149.  
  150. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  151. Γöé ::            Γöé Verketten einer eines Elements mit einer    Γöé
  152. Γöé               ΓöéListe. (1::[2,3];)                           Γöé
  153. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  154. Γöé hd            Γöé gibt das erste Element der Liste zur╨æck ('a Γöé
  155. Γöé               Γöélist->a)                                     Γöé
  156. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  157. Γöé tl            Γöé gibt alle Element au╤üer dem ersten zur╨æck   Γöé
  158. Γöé               Γöé('a list->'a list).                          Γöé
  159. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  160. Γöé @             Γöé verketten zweier Listen                     Γöé
  161. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  162. Γöé rev           Γöé "Spiegeln" einer Liste                      Γöé
  163. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  164. Γöé len           Γöé gibt die Zahl der Elemente einer Liste      Γöé
  165. Γöé               Γöézur╨æck                                       Γöé
  166. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  167. Γöé map           Γöé Berechnet die Funktion f f╨ær jedes Element  Γöé
  168. Γöé               Γöéeiner Liste. map f [1,2];                    Γöé
  169. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  170.  
  171.  
  172. ΓòÉΓòÉΓòÉ 1.6. Deklarationen ΓòÉΓòÉΓòÉ
  173.  
  174.  In diesem Abschnitt wird beschrieben, wie Variablen, Funktionen, ... definiert 
  175. und implizit deklariert werden. 
  176.  
  177.  
  178. ΓòÉΓòÉΓòÉ 1.6.1. Variablen ΓòÉΓòÉΓòÉ
  179.  
  180.  Eine Variable wird durch  val x=5; deklariert/definiert. 
  181.  
  182.  
  183. ΓòÉΓòÉΓòÉ 1.6.2. Funktionen ΓòÉΓòÉΓòÉ
  184.  
  185.  Funktionen werden mit fun f x = x*4; deklariert. Der Typ dieser speziellen 
  186. Funktion wird dann mit fn:int->int bezeichnet. Eine Funktion ohne Parameter 
  187. (fn:unit->int) kann durch fun f () = 5; deklariert werden. Andererseits kann 
  188. eine Funktion Parameter ben╨ætzen ohne eine Ausgabe zu haben. (fun f x=() ergibt 
  189. fn:int->unit). Achtung: Diese Funktionen sind nur sinnvoll, wenn sie 
  190. Seiteneffekte haben, die in einer funktionalen Sprache vermieden werden m╨æssen. 
  191. Rekursion ist mit dieser Form der Definition m╨ñglich. 
  192.  
  193.  Funktionen k╨ñnnen auch durch val f = fn x=>x*4; deklariert werden. Somit kommt 
  194. zu Ausdruck, da╤ü auch Variablen letztendlich 0-stellige Funktionen sind. 
  195.  
  196.  Bei dieser zweiten Form der Definition ist kein R╨æckbezug auf den eigenen 
  197. Namen (und damit keine Rekursion) m╨ñglich. Rekursive Funktionen m╨æssen daher 
  198. mit "rec" explizit als rekursiv definiert werden: val rec fac=(fn=>if n=0 then 
  199. 1 else n*fac(n-1));. 
  200.  
  201.  
  202. ΓòÉΓòÉΓòÉ 1.6.3. Neue Datenobjekte (Enumeration) ΓòÉΓòÉΓòÉ
  203.  
  204.  mit datatype k╨ñnnen neue Datenobjekte kreiiert werden. Die Deklaration lautet: 
  205. datatype tag=mo|di|mi|do|fr|sa|so; Ein einzelnes Element (z.B. do) ist dann vom 
  206. Typ tag. Also gilt do:tag. 
  207.  
  208.  
  209. ΓòÉΓòÉΓòÉ 1.7. lokale Deklarationen ΓòÉΓòÉΓòÉ
  210.  
  211.  Dieser Abschnitt beschreibt Deklarationen lokal zu Ausdr╨æcken und anderen 
  212. Deklarationen. 
  213.  
  214.  
  215. ΓòÉΓòÉΓòÉ 1.7.1. Ausdr╨æcke ΓòÉΓòÉΓòÉ
  216.  
  217.  mit let ... in ... end kann eine Deklaration lokal in einem Ausdruck erfolgen. 
  218. Bsp.: let val pi=3.14 in pi*d end; 
  219.  
  220.  
  221. ΓòÉΓòÉΓòÉ 1.7.2. Deklarationen ΓòÉΓòÉΓòÉ
  222.  
  223.  mit local ... in ... end kann eine Deklaration in einer anderen Deklaration 
  224. erfolgen. Bsp.: local fun flaeche=... in fun vol=... end; 
  225.  
  226.  
  227. ΓòÉΓòÉΓòÉ 1.8. Pattern Matching ΓòÉΓòÉΓòÉ
  228.  
  229.  Das Pattern Matching gestattet die Benutzung von Mustern und Wildcards. 
  230. Pattern Matching wird schon bei der einfachen Zuweisung benutzt. Z.B. val x=4; 
  231. oder val (x,y)=(2,false); Als Wildcard kann das Zeichen "_" eingesetzt werden. 
  232. Es steht f╨ær einen beliebigen Wert. So gibt die Funktion  fun fst (x,_) = x; 
  233. den ersten Wert eines Tupels zur╨æck. 
  234.  
  235.  H╨öufiger ist die Anwendung bei Funktionen im Sinne einer Fallunterscheidung. 
  236. So z.B. in  fun f 0=0 | f _=1;. Insbesondere gilt dies bei Enumerationen. 
  237.  
  238.  Muster lassen sich mit dem Schl╨æsselwort as benennen. Die Funktion fun mirror 
  239. (p as (x,y))=(p,(y,x));  f╨æhrt bei Eingabe von mirror (1,2) zu ((1,2),(2,1)). 
  240.  
  241.  Muster werden sequentiell getestet. Redundante Muster f╨æhren ebenso wie 
  242. unvollst╨öndige Muster zu Warnungen. 
  243.  
  244.  Eine ╨öhnliche Form des Pattern Matchings l╨ö╤üt sich mit dem case-Konstrukt 
  245. erreichen. Die Funktion fun f x=case x of 0=>0 | _=>1; hat die gleiche Semantik 
  246. wie die Funktion oben. 
  247.  
  248.  
  249. ΓòÉΓòÉΓòÉ 1.9. Operatoren ΓòÉΓòÉΓòÉ
  250.  
  251.  Operatoren k╨ñnnen wie einfache Funktionen definiert werden. Z.B.  fun != (x,y) 
  252. = x<>y;  f╨ær einen C-╨öhnlichen "ungleich"-Operator. Mit infix != wird != zum 
  253. Infix-Operator. nonfix macht Selbiges wieder r╨æckg╨öngig. infixr steht f╨ær 
  254. rechtsassoziative Operatoren. Mit z.B. infixr 8 != kann zus╨ötzlich die 
  255. Pr╨özidenz angegeben werden. 
  256.  
  257. Standard-Operatoren mit Pr╨özidenz 
  258.  
  259. ΓöîΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö¼ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÉ
  260. ΓöéPr╨özidenz      Γöé Operator      Γöé Bedeutung                              Γöé
  261. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  262. Γöé7              Γöé /             ΓöéDivision                                Γöé
  263. Γöé               Γöédiv            Γöéganzzahlige Division                    Γöé
  264. Γöé               Γöémod            ΓöéRest                                    Γöé
  265. Γöé               Γöé*              Γöé                                        Γöé
  266. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  267. Γöé6              Γöé +             ΓöéAddition                                Γöé
  268. Γöé               Γöé-              ΓöéSubtraktion                             Γöé
  269. Γöé               Γöé^              ΓöéVerkettung von Strings                  Γöé
  270. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  271. Γöé5              Γöé               ΓöéVerkettung Element und Liste            Γöé
  272. Γöé               Γöé::             ΓöéVerkettung zweier Listen                Γöé
  273. Γöé               Γöé@              Γöé                                        Γöé
  274. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  275. Γöé4              Γöé               Γöégleich                                  Γöé
  276. Γöé               Γöé=              Γöéungleich                                Γöé
  277. Γöé               Γöé<>             Γöékleiner                                 Γöé
  278. Γöé               Γöé<              Γöégr╨ñ╤üer                                  Γöé
  279. Γöé               Γöé>              Γöékleiner gleich                          Γöé
  280. Γöé               Γöé<=             Γöégr╨ñ╤üer gleich                           Γöé
  281. Γöé               Γöé>=             Γöé                                        Γöé
  282. Γö£ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö╝ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöñ
  283. Γöé3              Γöé o             ΓöéFunktionenverkettung                    Γöé
  284. Γöé               Γöé               Γöé?                                       Γöé
  285. ΓööΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓö┤ΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÇΓöÿ
  286.  
  287.  
  288. ΓòÉΓòÉΓòÉ 1.10. Ausnahmen ΓòÉΓòÉΓòÉ
  289.  
  290. SML stellt ein Exception-handling zur Verf╨ægung. Eine Ausnahme wird deklariert 
  291. mit exception ex1 and ex2; Ein Ausnahme wird durch raise ex2 ausgeworfen. 
  292.  
  293. Ausnahmen sind nat╨ærlich nur sinnvoll, wenn sie auch aufgefangen werden k╨ñnnen. 
  294. Das geschieht mit handle. Bsp:  fun divide a b:real=(a/b) handle Quot=>9e999; 
  295. Dadurch ergibt die Division durch Null "unendlich"; 
  296.  
  297. Viele Ausnahmen sind schon vordefiniert. 
  298.  
  299. Anm.: Die Verwandschaft des C++-Exception handlings mit dem von ML ist nicht zu 
  300. ╨æbersehen. 
  301.  
  302.  
  303. ΓòÉΓòÉΓòÉ 1.11. High-order Funktionen ΓòÉΓòÉΓòÉ
  304.  
  305. Eine Funktion kann Argument oder Ergebis einer anderen Funktion sein. Letztere 
  306. wird dann high-order-function genannt. Bsp.: 
  307.  
  308. - fun add x y:int = x+y;
  309. > val add = fn : int -> (int -> int)
  310. - val succ = add 1;
  311. > val succ = fn : int -> int
  312. - val x=succ 11;
  313. > val x = 12 : int
  314.  
  315.  Wichtig sind in diesem Zusammenhang das currying (Eine Funktion mit mehreren 
  316. Argumenten mit einem Argumentstupel brechnen) und das uncurrying (Eine 
  317. Funktion, die ein Argumentstupel ben╨ñtigt mit mehreren Argumenten aufrufen.) 
  318. Def. der Funktionen: 
  319.  
  320. - fun curry f = fn x => fn y => f(x,y); (* s. Fkt.Dekl. *)
  321. > val curry = fn : (('a * 'b) -> 'c) -> ('a -> ('b -> 'c))
  322. - fun uncurry f = fn (x,y) => f x y;
  323. > val uncurry = fn : ('a -> ('b -> 'c)) -> (('a * 'b) -> 'c)
  324. - uncurry add (2,3);
  325. > 5 : int
  326.  
  327.  
  328. ΓòÉΓòÉΓòÉ 1.12. Rekursion ΓòÉΓòÉΓòÉ
  329.  
  330. Die Rekursion spielt bei SML eine sehr bedeutende Rolle. Folgende Grundtypen 
  331. werden unterschieden: 
  332.  
  333. o lineare Rekursion: Jeder Aufruf f╨æhrt zu h╨ñchstens einem weiteren rekursiven 
  334.   Aufruf. Bsp.: Fakult╨öt 
  335.  
  336. o repepetive Rekursion (tail recursion): Der rekursive Aufruf ist die ╨öu╤üerste 
  337.   Aktion. Diese Form der Rekursion wird in Iteration umgewandelt und ist daher 
  338.   sehr effizient. Bsp. Fakult╨öt 
  339.  
  340. o kaskadenartige (nichtlineare) Rekursion: Ein Aufruf kann zu zwei oder mehr 
  341.   weiteren Rekursiven Aufrufen f╨æhren. Bsp. Fibonacci-Zahlen 
  342.  
  343. o vernestete Rekursion (nested recursion): Ein Parameter des rek. Aufrufs 
  344.   stellt wieder einen rekursiven Aufruf dar. Bsp. Ackermannfunktion 
  345.  
  346. o verschr╨önkte Rekursion: Zwei oder mehr Funktionen rufen sich gegenseitig 
  347.   rekursiv auf. 
  348.  
  349.  
  350. ΓòÉΓòÉΓòÉ 1.13. Datentypen ΓòÉΓòÉΓòÉ
  351.  
  352. Neue Datentypen k╨ñnnen auf vielf╨öltige Weise definiert werden. 
  353.  
  354. o Enumeration: datatype TAG=Mo|Di|Mi|Do|Fr|Sa|So; 
  355.  
  356. o Konstruktor: datatype COMPLEX=Complex of real*real; 
  357.  
  358. o Union Types: datatype NUMBER=Int of int | Real of real; 
  359.  
  360. o Rekursive Typen:  datatype NAT=Zero | Succ of NAT; 
  361.  
  362.  Auf diese Weise werden komplett neue Datentypen mit den dazugeh╨ñrigen 
  363. Konstruktoren geschaffen. D.h. Int(4) erzeugt den Typen NUMBER. 
  364.  
  365.  Eine "Abk╨ærzung" f╨ær Typen kann durch  type COMPLEX=real*real; geschaffen 
  366. werden. In diesem Fall wird kein grunds╨ötzlich neuer Typ erzeugt. Es kann also 
  367. nicht zwischen COMPLEX und real*real unterschieden werden. 
  368.  
  369.  
  370. ΓòÉΓòÉΓòÉ 1.14. Abstrakte Datentypen ΓòÉΓòÉΓòÉ
  371.  
  372. Abstrakte Datentypen werden ╨öhnlich wie einfache Datentypen definiert. 
  373. Zus╨ötzlich wird noch ein Satz von Variablen und Funktionen deklariert. 
  374. Beispiel: 
  375.  
  376. abstype 'a QUEUE = Queue of 'a list
  377. with exception Empty
  378.    val Empty = Queue nil
  379.    fun Enter e (Queue es) = Queue (e::es)
  380.    ...
  381. end;
  382.  
  383.  
  384. ΓòÉΓòÉΓòÉ 1.15. Streams ΓòÉΓòÉΓòÉ
  385.  
  386. SML unterst╨ætzt mittels Streams die Dateiein- und ausgabe. Dateien werden 
  387. ge╨ñffnet mittels: 
  388.  
  389. val outfile=open_out "datei.out";
  390. val infile=open_in "datei.in";
  391.  
  392. Die Streams std_in und std_out sind vordefiniert. Mit den Standardfunktionen 
  393. input und output kann man leicht eine Funktion echo definieren: 
  394.  
  395. fun echo()=if lookahead std_in="." then ()
  396.       else (output(std_out,input(std_in,1));echo());
  397.  
  398.  
  399. ΓòÉΓòÉΓòÉ 2. reservierte W╨ñrter ΓòÉΓòÉΓòÉ
  400.  
  401.  1. abstype 
  402.  
  403.  2. and 
  404.  
  405.  3. andalso 
  406.  
  407.  4. as 
  408.  
  409.  5. case 
  410.  
  411.  6. do 
  412.  
  413.  7. datatype 
  414.  
  415.  8. else 
  416.  
  417.  9. end 
  418.  
  419. 10. exception 
  420.  
  421. 11. fn 
  422.  
  423. 12. fun 
  424.  
  425. 13. handle 
  426.  
  427. 14. if 
  428.  
  429. 15. in 
  430.  
  431. 16. infox 
  432.  
  433. 17. infixr 
  434.  
  435. 18. let 
  436.  
  437. 19. local 
  438.  
  439. 20. nonfix 
  440.  
  441. 21. of 
  442.  
  443. 22. op 
  444.  
  445. 23. orelse 
  446.  
  447. 24. raise 
  448.  
  449. 25. rec 
  450.  
  451. 26. then 
  452.  
  453. 27. type 
  454.  
  455. 28. val 
  456.  
  457. 29. while 
  458.  
  459. 30. ( ) 
  460.  
  461. 31. [ ] 
  462.  
  463. 32. { } 
  464.  
  465. 33. , 
  466.  
  467. 34. : 
  468.  
  469. 35. ; 
  470.  
  471. 36. ... 
  472.  
  473. 37. | 
  474.  
  475. 38. = 
  476.  
  477. 39. => 
  478.  
  479. 40. -> 
  480.  
  481. 41. _ 
  482.  
  483. 42. # 
  484.