- Scalaをメインにやってます
- ScalaMatsuriよろしく
- rpscalaよろしく
fullName p = p.lastName ++ " " ++ p.firstName
と定義すると
forall r. { lastName :: String, firstName :: String | r } -> String
という型が推論される
fullName { firstName: "Kotori", lastName: "Minami", age: 16 }
firstNameとlastNameというフィールドを持つレコードなら渡せる
foreign import data Eff :: # ! -> * -> *
module Main where import Control.Monad.Eff import Control.Monad.Eff.Random import Debug.Trace main :: Eff (random :: Random, trace :: Trace) {} main = do n <- random print n
import Control.Monad.Eff import Control.Monad.Eff.Exception import Data.Either div :: forall r. Number -> Number -> Eff (err :: Exception String | r) Number div _ 0 = throwException "Division by zero" div n m = return (n / m) divPure :: Number -> Number -> Either String Number divPure n m = runPure (catchException (return <<< Left) (Right <$> div n m))