iT邦幫忙

functional programming相關文章
共有 288 則文章
鐵人賽 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 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 27

技術 Monads (2)

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

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

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

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

鐵人賽 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 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 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 25

技術 Functors

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

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

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

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

鐵人賽 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 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]):...

鐵人賽 Software Development DAY 19

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

解析器就是個能把 JSON 或 XML 等字串轉為 list、 map 等資料結構, 而這幾天就要用 functional programming 的概念來設計...

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

技術 [Should I use fp-ts?] Day 03 - pure function

在本系列文中,所有的程式碼以及測試都可以在 should-i-use-fp-ts 找到,今日的範例放在 src/day-03。本系列文的目的是讓讀者 和筆者 能...

鐵人賽 Software Development DAY 18

技術 Purely Function 的平行化 (4)

API 的代數性質 在 API 實作過程中,我們都是先把 function 的型態定義好,然後在隨著型態去實現它,例如 map 就是用了 map2 和 unit...

鐵人賽 Software Development DAY 17

技術 Purely Function 的平行化 (3)

持續精煉我們的核心 API 讓我們開始實作其他核心 API 吧!以下為完整程式: import java.util.concurrent.* object P...

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

技術 [Should I use fp-ts?] Day 01 - 前言

筆者背景 大家好,我是 Tuhacrt (吐哈庫)。 我是今年(2023)六月才剛成為軟體工程師的菜鳥工程師,有一次跟前輩在 debug 的途中討論到 Func...

鐵人賽 Software Development DAY 16

技術 Purely Function 的平行化 (2)

統整一下 Par 容器型態的 function 經過 昨天 的推導,我們的平行化 library 中定義了 Par[A] 容器型態,然後核心 API 中包含了以...