Haskell 语法糖

Haskell 语法糖

总结

三大本质: Case >>= 函数

语法糖 本质
模式匹配 case
If-Else case
Guard case
Do >>=
List Comprehension >>=
Let lambda 函数
运算符段 lambda 函数
中缀函数 前缀函数
Record 取参函数
Range enum 函数
String [Char]

\(~\)

Case

模式匹配

(x:xs) = x

case expr of
	pattern -> expr
	pattern -> expr
	...

If-else

if predicate then expr else expr

case predicate of
	True -> expr
	False -> expr

Guard

f xs 
	| predicate = expr
	| predicate = expr
  	| otherwise = expr
  
f xs = 	if predicate xs 
		then expr
        else 	if predicate
        		then expr
    			else expr

\(~\)

>>=

do

do
	x1 <- m1		m1 >>= \x1 ->
	x2 <- m2		m2 >>= \x2 ->
	..		
	xn <- mn		mn >>= \xn ->
    result			result

List Comprehension

[result | x1 <- m1, x2 <- m2, ...]


m1 >>= \x1 -> m2 >>= \x2 -> result

\(~\)

函数

Let

let x = expr; y = expr in f x y

(\x y -> f x y) expr expr

运算符段

(+1)
(1+)

\x -> (+) x 1
\x -> (+) 1 x

中缀函数

x + y

(+) x y

Record

data T = T { A :: Int, B :: Bool }


data T = T Int Bool

A :: T -> Int
A (T x _) = x

B :: T -> Bool
B (T _ y) = y

Range

[1..5]        -- 枚举
[1,3..10]     -- 指定步长

enumFromTo 1 5          -- [1,2,3,4,5]
enumFromThenTo 1 3 10   -- [1,3,5,7,9]

\(~\)

别名

字符串 []

"Hello World"

['H','e','l','l','o',' ','W','o','r','l','d']
posted @ 2025-04-03 11:49  (.)$(.)  阅读(10)  评论(0)    收藏  举报