www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

hasch

Gepostet:
01.11.2008 12:44

composeMaybe - Funktionen übergeben  
Hallo zusammen,
ich sollte eine Funktion composeMaybe :: (a -> Maybe b) -> (b -> Maybe c) -> (a -> Maybe c) schreiben, die zwei einstellige Funktionen mit Rückgabewert vom Typ Maybe zusammensetzt (Funktionskomposition).
Habe dazu mal eine Version versucht, leider fehlt mir ein Ansatz zum testen. Könnte mir mal jemand ein Beispiel für den Aufruf (die Nutzung) von composeMaybe geben? (Ich habe schon composeMaybe (2*) (2+) versucht, leider ohne Erfolg.) Danke :)


composeMaybe :: (a -> Maybe b) -> (b -> Maybe c) -> (a -> Maybe c)
composeMaybe f g = \x -> if isJust (f x) then g (fromJust (f x)) else Nothing
Zum Seitenanfang    
 
Siracusa

Gepostet:
02.11.2008 17:55

   
Hallo,

das Problem ist, daß (2*) und (2+) "normale" Funktionen sind, und keinen Maybe-Typ als Ergebnis haben. Hier sind mal zwei Funktionen zum Testen:

-- Sicheres Head
head' :: [a] -> Maybe a
head' [] = Nothing
head' xs = Just (head xs)

-- Sichere Division
div' :: Int -> Int -> Maybe Int
div' x 0 = Nothing
div' x y = Just (x `div` y)

-- Beispiel-Aufrufe:
*Main> composeMaybe head' (div' 10) [2]
Just 5
*Main> composeMaybe head' (div' 10) [0]
Nothing
*Main> composeMaybe head' (div' 10) []
Nothing
Prima, funktioniert! Smilie


Viele Grüße,

Siracusa
Zum Seitenanfang    
 
hasch

Gepostet:
13.11.2008 16:34

   
-- Falscher Thread, sorry.
Zum Seitenanfang