zoukankan      html  css  js  c++  java
  • [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"
  • 相关阅读:
    时间复杂度,空间复杂度
    冒泡排序,选择排序,插入排序
    redis集群
    redis进阶
    redis常识--基础
    mysql基本操作
    TCP/IP 的介绍
    OSI七层网络模型&TCP&UDP&三握四挥
    DNS
    局域网&广域网
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10629816.html
Copyright © 2011-2022 走看看