BME Villamosmérnöki és Informatikai Kar
Műszaki informatika szak
Nappali tagozat
2004/2005. tanév, tavaszi félév

Deklaratív programozás

3. SML kis házi feladat

2005. április 17.

A kis házi feladat beadása nem kötelező.

A feladat

Tekintsük az alábbi adattípus-deklarációt:
datatype 'a T = B of 'a T list | L of 'a
Írjon olyan SML-függvényt toList néven, amely egy 'a T típusú adatstruktúra 'a típusú elemeinek a balról jobbra haladó bejárási sorrendet megőrző listáját adja eredményül.
(* toList : 'a T -> 'a list
   toList t = a t 'a típusú elemeinek a balról jobbra haladó
              bejárási sorrendet megőrző listája
*)
Segédfüggvényeket definiálhat. A jobbrekurzív függvényekből generált számítási folyamatok kevesebb tárterületet használnak, mint a nemjobbrekurzív függvényekből generáltak, ezért ajánljuk, hogy jobbrekurzív függvényeket írjon, ám ez nem kötelező, a pontozásba nem számít bele.

Példák

toList (L 3) = [3];
toList (B[]) = [];
toList (B[B[],B[],B[],B[],B[]]) = [];
toList (B[L 5.4,B[],B[],L 13.6,L 7.7]) = [5.4, 13.6, 7.7];
toList (B[L 5,B[L 5,L 765,L 875],B[],B[L 7,B[],L 76,B[]]]) =
  [5, 5, 765, 875, 7, 76];
toList (B[L#"c",B[],B[],L#"i",L#"k"]) = [#"c", #"i", #"k"];

Tudnivalók a beadásról

A programot az Elektronikus Tanársegéd segítségével a weben keresztül lehet beadni, a HF beadás menüpont alatt. Ez a harmadik SML kis házi feladat, ezért khf-ml3.sml néven kell beküldeni a megoldást. A névben meg kell különböztetni a kis- és nagybetűket. A beadási határidő 2005. április 25., hétfő 24:00.

A vizsgaosztályzat megállapításakor a határidőre beadott, helyesen megoldott kis házi feladatért plusz 1 pont jár (a 100 pontból).