iT邦幫忙

functional programming相關文章
共有 294 則文章
鐵人賽 Software Development DAY 18
Haskell 從入門到放棄 系列 第 18

技術 [Haskell 從入門到放棄] Day 18 - Functor

Functor 用最簡單的一句話來解釋 functor 就是指可以被 map 的東西像是 List ,而在 Haskell functor 就只是 typecl...

鐵人賽 Software Development DAY 17
Haskell 從入門到放棄 系列 第 17

技術 [Haskell 從入門到放棄] Day 17 - Typeclass

Typeclass 讓我們重新回顧一下 typeclass 是什麼,它類似於其他語言中的介面(interface)。Typeclass 提供了一種定義一組類別所...

鐵人賽 Software Development DAY 14
Should I use fp-ts 系列 第 14

技術 [Should I use fp-ts?] Day 14 - fp-ts: Option Do

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-14 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 29

技術 Applicative Functors (2)

Monad 和 Applicative Functors 的差異 假設我們用 Option 來從 Map 資料中找東西,2 個查詢彼此獨立,通常可以輕鬆的用 m...

鐵人賽 Software Development DAY 16
Haskell 從入門到放棄 系列 第 16

技術 [Haskell 從入門到放棄] Day 16 - Algebraic Data Types (3)

Recursive Data Type 我們除了裡用 product 或者 sum 來組成的我們 type 以外,還可以使用 recursive 的概念來定義...

鐵人賽 Software Development DAY 13
Should I use fp-ts 系列 第 13

技術 [Should I use fp-ts?] Day 13 - fp-ts: Option fromNullable, fromPredicate

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-13 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 28

技術 Applicative Functors (1)

今天要介紹一個功能沒有 Monad 這麼強,但比較泛用的抽象介面,Applicative Functors, 在 Day 26 - Monads (1) 中,我...

鐵人賽 Software Development DAY 15
Haskell 從入門到放棄 系列 第 15

技術 [Haskell 從入門到放棄] Day 15 - Algebraic Data Types (2)

Sum Type 我們先來看一下 Bool 在 Haskell 是如何被定義的 data Bool = False | True deriving (Read...

鐵人賽 Software Development DAY 27

技術 Monads (2)

Monads 定律 1 - 結合律 (Associative Law) 假設我們有個 Item 和 Order 類別, case class Item(name...

鐵人賽 Software Development DAY 26

技術 Monads (1)

Monads - flatMap 和 unit 的抽象介面 在介紹 Monad 之前,先聊聊一個之前有在 Option 和 Parser 下用到的 functi...

鐵人賽 Modern Web DAY 11

技術 currying柯里化

剛學js的時候,常常會看到自己難以理解的東西,比如說這個: function add(a) { return function (b) { retu...

鐵人賽 Software Development DAY 14
Haskell 從入門到放棄 系列 第 14

技術 [Haskell 從入門到放棄] Day 14 - Algebraic Data Types (1)

昨天我們說到可以使用 tuple (Double, Double, Double) 用三個double來表示三角形的三邊長。 但我們使用 tuple 來描述的話...

鐵人賽 Software Development DAY 10
Should I use fp-ts 系列 第 10

技術 [Should I use fp-ts?] Day 10 - fp-ts: Option getOrElse, getOrElseW

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-10 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 12
Should I use fp-ts 系列 第 12

技術 [Should I use fp-ts?] Day 12 - fp-ts: Option alt

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-12 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 11
Should I use fp-ts 系列 第 11

技術 [Should I use fp-ts?] Day 11 - fp-ts: Option match, matchW

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-11 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 25

技術 Functors

讓我們繼續從之前的程式中抽象出更高層的東西吧!今天要講的介面是 Functor。 Functors - map 的抽象介面 從 Day 3 開始,每個主題下的...

鐵人賽 Software Development DAY 24

技術 Monoids (3)

Monoid 的同態 (homomorphisms) 直接看例子吧! "foo".length + "bar".leng...

鐵人賽 Software Development DAY 9
Should I use fp-ts 系列 第 9

技術 [Should I use fp-ts?] Day 09 - fp-ts: Option flatten, flatMap(chain)

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-09 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 12
Haskell 從入門到放棄 系列 第 12

技術 [Haskell 從入門到放棄] Day 12 - lazy…evaluation…

今天要來介紹一個在 FP 中相當常見的特性 lazy evaluation (惰性求值) ,簡單來說就是當需要值的時候才會真正把值計算出來。 lazy eval...

鐵人賽 Software Development DAY 11
Haskell 從入門到放棄 系列 第 11

技術 [Haskell 從入門到放棄] Day 11 - 繼續談 higher order function

Fold 所謂 Fold 就是來簡化我們在遞迴中很常遇到的模式,匹配 (x:xs) 將 x 取出來後繼續將 xs 放入 function 運算 直到 [] 。通...

鐵人賽 Software Development DAY 8
Should I use fp-ts 系列 第 8

技術 [Should I use fp-ts?] Day 08 - fp-ts: Option map

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-08 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 23

技術 Monoids (2)

用 monoids folding List Monoid 跟 List 有著相當緊密的關係,Day 4 和 Day5 的 List 中我們有用到 2 個 fu...

鐵人賽 Software Development DAY 7
Should I use fp-ts 系列 第 7

技術 [Should I use fp-ts?] Day 07 - fp-ts: Option 型別以及建構子

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-07 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 22

技術 Monoids (1)

從今天開始要進入 Part 3 啦!Part 3 主要是 functional programming 下更高層的抽象,也就是說把之前各種主題下常看到的模式概念...

鐵人賽 Software Development DAY 10
Haskell 從入門到放棄 系列 第 10

技術 [Haskell 從入門到放棄] Day 10 - 再談 higher order function

Filter filter 是傳入一個會回傳 Bool 的 function 及 List,然後將 List 中每個元素丟進去 function 最後回傳所有執...

鐵人賽 Software Development DAY 6
Should I use fp-ts 系列 第 6

技術 [Should I use fp-ts?] Day 06 - pipe and flow

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-06 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 21

技術 能自由組合的解析器 Library (3)

如何處理有上下文關係的解析 想像一下若我們要解析開頭為數字,然後後面為 0 到 n 個字元 'a',以下的字串皆滿足此需求:0、1a、2aa、4aaaa, 但...

鐵人賽 Software Development DAY 9
Haskell 從入門到放棄 系列 第 9

技術 [Haskell 從入門到放棄] Day 09 - 終於來到 higher order function

終於來到一個跟 FP 的核心概念有關的特性了,首先我們需要知道 Haskell 是具有 First-class function 這個特性,意思是指 func...

鐵人賽 Software Development DAY 5
Should I use fp-ts 系列 第 5

技術 [Should I use fp-ts?] Day 05 - pointfree

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-05 並且有習題和測試可以讓大家練習。...

鐵人賽 Software Development DAY 20

技術 能自由組合的解析器 Library (2)

從重複辨識找到第一個正式定律 繼續 昨天 的定律推敲,首先來想一下如何辨識 0 到 n 次的字元 'a', def many[A](p: Parser[A]):...