www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

r2p2

Gepostet:
18.07.2009 13:33

Pattern Matching in Funktionen  
Hallo Forum,

ich habe ein Funktion 'tick' die, wenn der Zähler einen bestimmten Wert erreicht hat, o1 negiert.

type Every = Int
type Counter = Int

data Clock = Clock Every Counter Pin deriving (Show)

tick (Clock every every o1) = Clock every 0 (not o1)
tick (Clock every counter o1) = Clock every (counter+1) o1


ghc meint "Conflicting definitions for 'every'"

Ich weiß, dass diese Art des pattern matchings in Erlang funktioniert, was ich auch für eine stärke von funktionalen Programmiersprachen halten würde.
Ist es möglich das in Haskell ebenso elegant (ohne if) zu lösen?

Grüße
r2
Zum Seitenanfang    
 
Siracusa

Gepostet:
18.07.2009 17:37

   
Hallo r2p2,

nein, das ist soweit ich weiß momentan nicht in Haskell möglich. Das Thema wurde schon oft diskutiert, eine eindeutige Entscheidung, ob das Feature in die Sprache aufgenommen wir gibt es m. E. nicht. Du musst es also etwa so umschreiben:
tick (Clock every counter o1)
| every == counter = Clock every 0 (not o1)
| otherwise = ...

Viele Grüße,

Siracusa
Zum Seitenanfang    
 
r2p2

Gepostet:
18.07.2009 18:11

   
Schade, aber danke.

Grüße
Zum Seitenanfang