iT邦幫忙

functional programming相關文章
共有 358 則文章
鐵人賽 Software Development DAY 15

技術 [Day 15] 初探 Monoid:組合的力量

前言 在上一篇初探容器的文章中,留下了一個問題:當面對一組值時,要如何找到一種通用的模式,能可靠地將它們組合為一? 在解答問題之前,先來看看一個更普遍的觀念—...

鐵人賽 Software Development DAY 14

技術 [Day 14] 初探容器 (Container)

前言 今天要介紹的是 Container (容器),這會是後續 Functor、Monad、Applicative 概念的基礎。 在之前的文章中,我們學習到...

鐵人賽 Software Development DAY 14

技術 13. 如何測試 Effect 的程式

這篇我們要來幫 Effect 的程式寫測試,現在寫測試大家應該都是以 vitest 為主了吧,我們就來用 vitest 吧,若你平常有在寫測試,像這樣的測試應該...

鐵人賽 Software Development DAY 13

技術 [Day 13] 函數的語言:型別簽章(Type Signature)簡介

前言 在上一篇文章中,我們介紹了 const toSlug = pipe(trim, toLowerCase, replaceSpaces, removeEx...

鐵人賽 Software Development DAY 13

技術 12. Effect 的實戰分享 2:簡易爬蟲

這篇要來介紹怎麼使用 Effect 做個簡單的爬蟲,雖說是簡易的爬蟲,但我們要來做一個 「好」爬蟲,代表我們不會送一堆的請求到伺服器,會加上延遲等等,如果可以做...

鐵人賽 Software Development DAY 12

技術 [Day 12] Point-Free 是什麼?

前言 在上一篇文章中,我們介紹了「函數組合(Function Composition)」,透過把多個小函數拼接起來,我們能寫出更具模組化與表達力的程式。而今天...

鐵人賽 Software Development DAY 11

技術 [Day 11] 函數組合(Function Composition)

前言 今天要介紹的是函數組合(Function Composition)~在開始探索函數組合(Function Composition)的概念之前,先從一個生...

鐵人賽 Software Development DAY 12

技術 11. Effect layer: 管理 dependency 的相依性

在上一篇中我們講到了 DI ,這篇要來介紹 Effect 中的 DI 要如何透過 Layer 管理相依性 所以為什麼需要管理相依性,我們來講個例子,你設計了一個...

鐵人賽 Software Development DAY 10

技術 [Day 10] Currying(柯里化)簡介

前言 今天要介紹的是 Currying~ 在日常的軟體開發中,我們可能都寫過這樣的函式:它可能接受四、五個,甚至更多的參數。而在許多不同的呼叫場景中,其中好幾...

鐵人賽 Software Development DAY 10

技術 9. Effect 的超級魔法:排程與錯誤重試

在這篇裡,我們要來介紹 Effect 最強大的功能,排程還有錯誤重試 重覆執行 有時你可能需要重覆執行一段程式碼,平常你可能會使用迴圈做,如果還要加上定時的話,...

鐵人賽 Software Development DAY 9

技術 8. Effect 實戰分享 1 :資料清理

這篇我們總於要來看一下怎麼實際用 Effect 來實作一些功能了,第一篇是資料清理,我們要來看怎麼使用 Effect 協助我們清理資料,並安全的處理各種錯誤的情...

鐵人賽 Software Development DAY 8

技術 [Day 08] First-Class Functions 和 Higher-Order Functions (1):簡介與 forEach

前言 在上篇文章中,我們探討了如何透過分層設計(Stratified Design)來管理程式碼的複雜性。但如果我們能將程式中最核心的元素——「行為」本身——...

鐵人賽 Software Development DAY 8

技術 7. 用 Effect 打造自訂的錯誤型別

在前一篇文章中,我們介紹了怎麼在 Effect 中處理錯誤,然而,目前我們拋出的錯誤型態只有 Error ,說好的一看 type 就能知道會發生什麼錯誤呢?在這...

鐵人賽 Software Development DAY 7

技術 6. Effect 中的錯誤

在這篇中,我們要來看 Effect 中的兩種錯誤類型:預期的錯誤 Expected Error 與非預期的錯誤 Unexpected Error ,另外看在 E...

鐵人賽 Software Development DAY 6

技術 [Day06] 重構程式:擷取 Actions 中的 Calculations

前言 不知道大家平常開發的時候,有沒有遇過這種狀況?一個看似正常的函式,當你試圖幫它撰寫單元測試時,卻發現需要模擬 API 資料、偽造 DOM、處理全域狀態....

鐵人賽 Software Development DAY 6

技術 5. 初識 Effect 中的 concurrency

還記得之前我們建立 Effect 時還有分 sync 跟 promise 的嗎?另外還有提到 Effect 像是藍圖,設計好程式的流程後我們才開始執行,這篇裡我...

鐵人賽 Software Development DAY 5

技術 [Day05] 不可變性(Immutability)

前言 在上一篇文章中,有提到純函數 (Pure Function) 的優點是可預測、易於測試、可推理,雖然實際應用中無法將全部程式碼轉為純函數,但我們可以盡可...

鐵人賽 Software Development DAY 5

技術 4. Effect 的基本使用

在前一篇講了那麼多怎麼建立 Effect 跟如何執行,總覺得好像少了什麼東西,條件判斷的 if 還有像迴圈的 for 這些東西跑到哪邊去了,其實很簡單的,這邊想...

鐵人賽 Software Development DAY 4

技術 [Day04] Pure Function 是什麼?

前言 在上篇文章中,我們學會將程式碼分為 Actions、Calculations 與 Data 三類,並理解到 Calculations 是我們程式中穩定、...

鐵人賽 Software Development DAY 4

技術 3. 第一個 Effect

我們終於要來建立 Effect 了,但… 其實建立 Effect 有非常多的方法,執行 Effect 雖然少一點,但也不只一種,我就介紹幾個比較常用的 使用立即...

鐵人賽 Software Development DAY 3

技術 [Day03] Actions、Calculations 與 Data

前言:Actions、Calculations 與 Data 在上篇文章有提到,FP 的重點是要管理因副作用而產生的程式碼複雜性,而要如何管理副作用造成的意外...

鐵人賽 Software Development DAY 3

技術 2. 為什麼需要 Effect, Promise 不夠嗎

在開始前,我們先來看一個範例,關於以下的 function 你覺得可能有幾個地方可能發生錯誤呢? function fetchItemDetail(id: nu...

鐵人賽 Software Development DAY 2

技術 [Day02] 什麼是 Functional Programming?

前言 「函數式程式設計 (Functional Programming,簡稱 FP)」這個名詞應該大部分人都聽過,通常會看到類似這樣的定義:「FP 是一種使用...

鐵人賽 Software Development DAY 2

技術 1. Functional Programming 簡介

在第一篇我們說到會介紹一點 functional programming (FP) ,不過不用太緊張,我們不會很深入 FP 的概念,我想應該有不少人,看了一些...

鐵人賽 Software Development DAY 1

技術 [Day 01] 系列文動機與大綱

嗨大家好!我是 Monica,第一天一樣來講講系列文動機與大綱,談談未來的內容規劃。 關於分享主題 再次嘗試鐵人賽,這次的主題其實之前就想寫了,覺得 Func...

鐵人賽 Software Development DAY 15

技術 Day 15. 輸出入處理 - IO & Do notation

雖然函數式程式設計一直強調純函數(Pure Function),不要有Side Effect;但是一個系統程式,不太可能不和使用者、資料庫、終端機…等真實世界接...

鐵人賽 Software Development DAY 15

技術 深入淺出函數式編程 (FP)—進階議題

終於到了 FP 的第四篇了,本篇是 FP 的最後一篇,要來談一些 FP 的進階議題: 函數式編程慣用法 FP 與程式碼復用 (code reuse) 函數式...

鐵人賽 Software Development DAY 1

技術 0. Effect 魔法:替你的應用程式注入堅不可摧的力量

Effect 是近一兩年興起的一套 TypeScript 的函式庫,可以幫助我們打造更加強韌的應用程式,目前我已經使用 Effect 這個套件一年多了,這段時間...

鐵人賽 Software Development DAY 14

技術 深入淺出函數式編程 (FP)—常見的機制

在前一篇談到了函數式編程的概念與實作分離的觀點,那實作上有什麼 FP 的機制 (mechanism) 是我們在一般的編程可以使用的呢?不論是 Neovim 插件...

鐵人賽 Software Development DAY 13

技術 深入淺出函數式編程 (FP)—定義的難題

很多學習 FP 的初學者,接觸 FP 不久,就產生了兩個很大的疑問: 我會用 map, filter, reduce 了,那我算是會 FP 了嗎? FP 的...