
I have this piece of code:
stopDaytimeServer dts =
case dts of
DaytimeServer {streamPort = Just _, dgramPort = Just _} -> do
killServer (ss dts)
killServer (ds dts)
DaytimeServer {streamPort = Just _, dgramPort = Nothing} -> do
killServer (ss dts)
DaytimeServer {streamPort = Nothing, dgramPort = Just _} -> do
killServer (ds dts)
and I don't like it. I don't like the code repeting. It'd look good with Lips'
"when":
(define stop-daytime-serve dts
(when (stream dts)
(kill-server (ss dts)))
(when (dgram dts)
(kill-server (ds dts))))
Is there a better way to write that on Haskell ?
Thanks.
--
Pupeno

On 12/26/05, Pupeno
I have this piece of code:
stopDaytimeServer dts = case dts of DaytimeServer {streamPort = Just _, dgramPort = Just _} -> do killServer (ss dts) killServer (ds dts) DaytimeServer {streamPort = Just _, dgramPort = Nothing} -> do killServer (ss dts) DaytimeServer {streamPort = Nothing, dgramPort = Just _} -> do killServer (ds dts)
and I don't like it. I don't like the code repeting. It'd look good with Lips' "when": (define stop-daytime-serve dts (when (stream dts) (kill-server (ss dts))) (when (dgram dts) (kill-server (ds dts))))
Is there a better way to write that on Haskell ?
Yes, there is: stopDaytimeServer dts = do when (isJust (streamPort dts)) $ killServer (ss dts) when (isJust (dgramPort dts)) $ killServer (ds dts) You can do the same thing with 'runDaytimeServer'. -- Friendly, Lemmih
participants (2)
-
Lemmih
-
Pupeno