• [PureScript] Basic Data Constructors in PureScript


    PureScript types are very extensive and we are going to experiment with type constructors and how to make then use them.

    We can define a custom data type:

    -- Data constructors
    data FooType = Foo | Bar String

    Define a function, take FooType, return a string:

    runFoo :: FooType -> String
    -- runFoo take a param Foo which should be string
    runFoo Foo = "it is foo"
    -- runFoo also can take Bar and String
    -- <> is similar to str.concat isn JS
    runFoo (Bar s) = "Yeah it's Bar and " <> s

    Because FooType is Unit type, we need to define both 'Foo' and '(Bar s)'.

    main = render =<< withConsole do
      log $ show $ runFoo (Bar "Wan") -- "Yeah it's Bar and Wan"
      log $ show $ runFoo Foo -- "it is foo"

    --

    FullCode:

    module Main where
    
    import Prelude
    import Control.Monad.Eff.Console (log)
    import TryPureScript
    
    myTypes :: Int
    myTypes = 1
    
    -- add (a -> (b -> (a + b)))
    add :: Int -> Int -> Int
    add a b = a + b
    addMe = a ->  -> a + b
    
    -- inc (a -> (add 1 a))
    inc :: Int -> Int
    inc = add 1
    
    -- Data constructors
    data FooType = Foo | Bar String
    
    runFoo :: FooType -> String
    -- runFoo take a param Foo which should be string
    runFoo Foo = "it is foo"
    -- runFoo also can take Bar and String
    -- <> is similar to str.concat isn JS
    runFoo (Bar s) = "Yeah it's Bar and " <> s
    
    
    main = render =<< withConsole do
      log $ show $ runFoo (Bar "Wan") -- "Yeah it's Bar and Wan"
      log $ show $ runFoo Foo -- "it is foo"
  • 相关阅读:
    MVC模板页
    MVC Razor 语法(转)
    Code First 更新数据库结构
    mvc5 HTML Helper
    mvc5经典教程再补充。。
    mvc5入门,经典教程。。
    关于“以管理员身份运行”。。。
    windows8无脑式双系统安装教程(转)
    vs2010 无法连接到asp.net development server
    VMware虚拟机下安装RedHat Linux 9.0
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10629816.html
Copyright © 2020-2023  润新知