zoukankan      html  css  js  c++  java
  • [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]
  • 相关阅读:
    三范式
    SVN
    docker镜像文件的导入与导出(docker镜像迁移)
    OpenStack镜像服务基本操作
    keystone认证服务
    OpenStack存储(单节点)
    OpenStack单节点制作镜像
    清除OpenStack网络与路由
    制作OpenStack云平台centos6.5镜像
    OpenStack单节点网络设置
  • 原文地址:https://www.cnblogs.com/Answer1215/p/10632869.html
Copyright © 2011-2022 走看看