www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

antonm

Gepostet:
10.06.2008 03:23

foldl funktion in haskell?  


Hallo ich bin ein Haskell- und Programmierungsanfänger und hoffe jemand kann mir helfen?

Ich möchte eine Funktion schreiben die für eine Liste von Zahlen prüft, ob eine Zahl dabei ist die grö0ßer als 30 ist.

Dies möchte ich mit hilfe "foldle" machen.

Ich versetehe was foldle macht, es addiert die elemente in der lieste von links nach rechts.

Z.B

foldl (+) 0 [1,2,3] 
6


Aber ich kreige die Funktion nicht hin, soweit bin ich bisher:


test x y z                 // x y z sollen die elemente sein die in die liste hizugefügt werden

let lst = x:y:z:[]

if foldl (+) 0 lst == 30 then True else False


Leider komme ich nicht weiter, kann mir jemand helfen?

Zum Seitenanfang    
 
Siracusa

Gepostet:
10.06.2008 19:14

   
Hallo antonm,

eine Möglichkeit ist diese hier:
anyGreater30 lst = foldl (\b x -> b || x>30) False lst

Hugs> anyGreater30 [10,20,30]
False :: Bool
Hugs> anyGreater30 [10,20,30,40]
True :: Bool

Es gibt aber auch die Funktion "any" im Prelude, die für deinen Zweck besser geeignet ist. Damit kannst du einfach schreiben "anyGreater30 = any (>30)" und erhältst die gleiche Funktion wie oben.


Viele Grüße,

Siracusa
Zum Seitenanfang