• [PureScript] Break up Expressions into Cases in PureScript using Simple Pattern Matching


    Pattern matching in functional programming languages is a way to break up expressions into individual cases.

    We are going to go through how to pattern match in PureScript with simple patterns, guards, array patterns and record patterns.

    greater :: Int -> Int -> Int
    greater n m | n > m = n       -- '|' is called guard, the same as if else
                | otherwise = m
    
    isEmpty :: forall a. Array a -> Boolean  -- a in array should have same type
    isEmpty [] = true
    isEmpty _ = false
    main = render =<< withConsole do 
      log $ show $ greater 3 2 -- 3
      log $ show $ greater 11 22 -- 22
      log $ show $ isEmpty [] -- true
      log $ show $ isEmpty [1, 2] -- false

    --

    Full code:

    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
    
    
    greater :: Int -> Int -> Int
    greater n m | n > m = n       -- '|' is called guard, the same as if else
                | otherwise = m
    
    isEmpty :: forall a. Array a -> Boolean  -- a in array should have same type
    isEmpty [] = true
    isEmpty _ = false
    
    main = render =<< withConsole do
      log $ show $ greater 3 2
      log $ show $ greater 11 22
      log $ show $ isEmpty []
      log $ show $ isEmpty [1, 2]
  • 相关阅读:
    windows下端口映射(端口转发)
    SQLServer 2008 复制同步(发布、订阅)的几个问题
    SqlServer:此数据库处于单用户模式,导致数据库无法删除的处理
    jQuery函数的等价原生函数【转载】
    JavaScript学习第三天
    持续集成工具hudson【转载】
    linux-unzip命令【转载】
    javascript学习第一天
    java.util.Properties
    Eclipse快捷键【转载】
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10632869.html
Copyright © 2020-2023  润新知