
I'm having some trouble understanding where I can or cannot use guards inside record syntax. I'm writing a simple conversion routine, but I am not able to write it without inserting an extra let. Do I need a let expression here? Am I missing something? -------------- data OldTrade = OldTrade { oldprice :: Double , oldamount :: Double , oldbuysell :: String -- "buy", "sell" or "" } deriving( Eq, Show) data BuyOrSell = Buy | Sell | Unknown deriving(Eq, Show) data Trade = Trade { price :: Double , amount :: Double , buysell :: BuyOrSell } deriving( Eq, Show) convert :: OldTrade -> Trade convert ot = Trade { price = oldprice ot, amount = oldamount ot, buysell = let x | oldbuysell ot == "buy" = Buy | oldbuysell ot == "sell" = Sell | otherwise = Unknown in x } -- how do I eliminate the 'let' expression here? -- I wanted to write something like: -- -- buysell | oldbuysell ot == "buy" = Buy -- | oldbuysell ot == "sell" = Sell -- | otherwise = Unknown -------------- Thanks! Dimitri