I am about an hour into learning PureScript and I've hit a snag going through the PureScript by Example Tutorial which PureScript recommended on their site. (Specifically I'm in section 2.10). I have managed to get everything installed and I am attempting to use the logShow method they describe in the tutorial. I am getting an Unknown value logShow error when I run this code:
module Main where
import Prelude
import Control.Monad.Eff (Eff)
import Control.Monad.Eff.Console (CONSOLE, log)
import Math (sqrt)
main :: forall e. Eff (console :: CONSOLE | e) Unit
main = logShow (diagonal 3.0 4.0)
diagonal w h = sqrt(w * w + h * h)
I assume that logShow is a method intended to log an integer since the actual log method only takes strings. Where is this method defined? Am I failing to import something? Is my installation incorrect? Or is the tutorial skipping something?
Thanks in advance!
You're almost there.
Notice this line:
import Control.Monad.Eff.Console (CONSOLE, log)
Control.Monad.Eff.Console offers both log and logShow. To solve your particular problem, you just need to replace log between those parens with logShow (the first name after the (, CONSOLE, is the name of Effect).
Just in case -- The difference between the two can be seen by the types:
log :: forall eff. String -> Eff (console :: CONSOLE | eff) Unit
logShow :: forall a eff. Show a => a -> Eff (console :: CONSOLE | eff) Unit
Ignoring the effects for a moment...
log :: String -> Unit
logShow :: forall a. Show a => a -> Unit
log only prints strings, while logShow prints anything that has a Show instance.
Realistically, yes; it means logShow is simply (log <<< show). And if we go look at the source... We can find it's indeed the case.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With