Haskell :: Sprache
  Suche:
 Blatt 8 [ohne Text] 01.12.2002 (05:23 Uhr) amo
 Aufgabe 1 [ohne Text] 01.12.2002 (05:24 Uhr) amo
 power 19.12.2002 (13:10 Uhr) amo
 power 19.12.2002 (13:13 Uhr) amo
 power 19.12.2002 (13:14 Uhr) amo
> power :: [a] -> [[a]]
> power [] = [[]]
> power (e:l) = power l ++ map (\e x -> (e:x)) (power l)

Das gibt beim Typecheck nach dem Laden vom Script folgenden Typfehler:

ERROR "uebbl08.hs":15 - Type error in application
*** Expression     : power l ++ map (\e x -> e : x) (power l)
*** Term           : power l
*** Type           : [[a]]
*** Does not match : [[[a]] -> [[a]]]


Kann das jemand erklären?
Wo ist der entscheidende funktionale Unterschied zwischen
map (e:)
mit nur dem Konstruktor : und
map (\e x -> e:x)
mit Lambda - Kalkül?

map scheint in dem Fall map (\e x -> e:x), aber nicht in jedem Fall, eine Liste von Funktionen zurückzugeben, obwohl Haskell die Funktionalität von map alleine nicht so angibt, sondern als (a -> b) -> [a] -> [b].
 Aufgabe 2 [ohne Text] 01.12.2002 (05:24 Uhr) amo
 Aufgabe 3 [ohne Text] 01.12.2002 (05:25 Uhr) amo
 Aufgabe 4 [ohne Text] 01.12.2002 (05:25 Uhr) amo
 Aufgabe 4 a) [ohne Text] 19.12.2002 (12:59 Uhr) amo
 Aufgabe 4 b) [ohne Text] 19.12.2002 (12:59 Uhr) amo
0 User im Forum. Kostenloses Forumhosting von plaudern.de. Dieses Forum im eigenen Design entführen. Impressum