iT邦幫忙

functional programming相關文章
共有 294 則文章
鐵人賽 Modern Web DAY 9

技術 Day 9 :何謂 Immutable Data?(1):關於 Immutable 與 Mutable(修正版)

在一開始的簡介中我們曾經聊過構成 FP 的幾個要素,其中一點是,在 FP 這個設計典範中我們只使用 Immutable Data 來進行資料的處理。 為什麼「只...

鐵人賽 Modern Web DAY 8

技術 Day 8 :JavaScript 型別與他們的地雷(5):結語

截至這個章節,我們大致上把要應用 FP 所需要、也最基礎的 JavaScript 概念了解過一遍了,當然在 後的章節中,我們還會把先前所提到的概念往更進階的延伸...

鐵人賽 Modern Web DAY 6

技術 Day 6 :JavaScript 型別與他們的地雷(3):函式是一等公民

說到 Functional Programming,其實我們不難發現這個設計模式基本上就是以「函式」作為主軸。 函式在 FP 中可以說是核心概念,就像先前所提到...

鐵人賽 Modern Web DAY 5

技術 Day 5:JavaScript 型別與他們的地雷(2):{ } === { } ?

在上個章節,我們聊到 JavaScript 其實是一種非常容易、不小心就變動到變數值的一種語言,這其實與它底層運作的記憶體位置有關,這說起來有點抽象,我們先來看...

鐵人賽 Software Development DAY 2

技術 Kotlin 作為 Server Side 開發語言 - Day2

第二天來談談為何要採用 Koltin。Kotlin 現在已經廣泛的被 Java 框架例如 Spring Boot, Quarkus 所支援。Thinking...

鐵人賽 Modern Web DAY 4

技術 Day 4 :JavaScript 型別與他們的地雷(1): 基本型別與物件

在了解 FP 與 JavaScript 的歷史之後,有沒有覺得:「咦?設計模式其實也沒有離自己那麼遠嘛!」在繼續深入了解 FP 之前,讓我們來看看 JavaSc...

鐵人賽 Modern Web DAY 3

技術 Day 3:初探設計典範(2):FP 簡介(修正版)

在前一章節中,我們花了很多的篇幅來聊 FP 這個程式設計的演進史,從中不難看出由於 JavaScript 的基因設定本來就會帶有多設計典範(Multi-para...

鐵人賽 Modern Web DAY 2

技術 Day 2 :初探設計典範(1):FP 的崛起、沒落、東山再起(修正版)

在前一章節中,我們曾經聊到初級前端工程師在撰寫或是學習 JavaScript 會遇到的元件封裝問題,但除了元件的封裝外,相信大家也會有以下疑惑: 要怎麼預防臭...

鐵人賽 Modern Web DAY 1

技術 Day 1: 致 JavaScript 開發者的 Functional Programming 指南(修正版)

嗨,大家好!歡迎來到「致 JavaScript 開發者的 Functional Programming 指南」! 在切入到正題前,首先想要跟大家說說自己與 Ja...

鐵人賽 Software Development DAY 29

技術 Day 29 - State Monad IV

Review 由於 State 原本可以一篇寫完的,被我拖成四篇的關係,所以來回顧一下,哈哈哈哈哈哈 這是我們的前幾章實作的 State Monad const...

鐵人賽 Software Development DAY 28

技術 Day 28 - State Monad III

嗨大家好,真希望一天能有 48 小時,不然這主題都要分到四部曲了,沒錯,應該會有四部曲! 抱歉了! Applicative Functor 上次提到了 map...

鐵人賽 Software Development DAY 27

技術 Day 27 - State Monad II

在上一章,我們提到了如何用一般方法實作 PRNG 亂數生成器,本章將介紹 State Monad 以及改寫上一章的範例,廢話不多說讓我們看下去吧! Introd...

鐵人賽 Software Development DAY 26

技術 Day 26 - State Monad I

還記得先前提到 Math.random 並非是純函式嗎,因為每次給定相同的輸入都會是不同的輸出回傳回來,那有什麼辦法可以讓它是回傳亂數,又可以是純函數呢? 沒錯...

鐵人賽 Software Development DAY 25

技術 Day 25 - Reader Monad

今天來介紹 Reader Monad,其主要處理的就是 dependency injection, 痛點 說到 dependency injection 如果最...

鐵人賽 Software Development DAY 24

技術 Day 24 - Travserable

在介紹 Task Monad 前,來介紹一個重要的概念, 想像一下,有一組陣列裡面的項目都是 userId,現在要將 userId 去做 http reques...

鐵人賽 Software Development DAY 23

技術 Day 23 - Either Monad

到目前為止,我們介紹 Maybe Monad 其是專門處理無值情境以及 IO Monad 則是處理同步計算的 effect,例如 console.log, lo...

鐵人賽 Software Development DAY 22

技術 Day 22 - IO Monad

上一章節簡單的介紹如何處理 side effect 的其中一個方法 dependency injection,而本章要介紹第二個方法 IO Monad,但在這之...

鐵人賽 Software Development DAY 21

技術 Day 21 - Handle Side Effect I

在介紹本篇我們先來複習一下先前在 pure function 那章提過的一些名詞 Side Effect: 當呼叫函式時,此函式會改變外部物件的狀態,則稱這...

鐵人賽 Software Development DAY 20

技術 Day 20 - Maybe Monad II (Piping)

Review 前一篇文章我們談到了如何實作一個 Maybe Monad,而其主要的功能就是處理無值的情境,今天我們要來介紹另外一種寫法去實作 Maybe Mon...

鐵人賽 Software Development DAY 19

技術 Day 19 - Maybe Monad

yo, what's up 在之前我們都是用 Identity 作為例子,但其功用並不大,所以今天要來開始介紹一些比較常用的 ADTs,今天就從 Maybe 開...

鐵人賽 Software Development DAY 18

技術 Day 18 - Chain

yo, what's up 又看到了這張熟悉的表了,想必大家都已經知道這章要來介紹什麼了, 但在這之前先來複習一下,兩個程式 f 與 g 如何進行 compos...

鐵人賽 Software Development DAY 17

技術 Day 17 - Applicative

Introduction Type Signature of :: Applicative f => a -> f a Law Identit...

鐵人賽 Software Development DAY 16

技術 Day 16 - Apply

到目前為止我們已經知道了 Functor 可以將 effect 跟 pure function 進行 compose,但我們沒有提到一點是 Functor 無法...

鐵人賽 Software Development DAY 15

技術 Day 15 - Contravariant Functor

在上一章,我們提到了 Functor,但更精準地說是 Covariant functor,而今天要提到的則是 Contravariant Functor,其定義...

鐵人賽 Software Development DAY 14

技術 Day 14 - Functor

Introduction 在先前我們提到了 compose,並且將許多單一功能的純函式,透過 compose 成一個更強大的計算函式。 但問題就來了,當兩個函式...

鐵人賽 Software Development DAY 13

技術 Day 13 - Semigroup II & Monoid

yo, what's up Semigroup II 多組 Semigroup 進形合併 到目前為止我們已經知道 Semigroup 可以透過 concat 將...

鐵人賽 自我挑戰組 DAY 14
開始入坑網頁吧! 系列 第 14

技術 JavaScript Arrow Function(箭頭函式)

箭頭函式 箭頭函式功能與一般函式的用法大致差不多,不過寫法卻比一般函式還要簡潔的多。這裡就直接來時做如何把一般函式改成箭頭函式,如此會比較好理解兩者之間的差異。...

鐵人賽 Software Development DAY 12

技術 Day 12 - Semigroup I

Definition of a Semigroup 一個集合(Set)或稱型別(Type) 有 concat method 必須符合 associative...

鐵人賽 Software Development DAY 11

技術 Day 11 - Algebraic Data Types

yo, what's up? Product Type Product types 允許同時存在兩種以上的資料型態在內 舉例來說現在我們建立一個特別的型別叫...

鐵人賽 Software Development DAY 10

技術 Day 10 - Algebraic structure

yo, what's up 本章要來介紹 FP 的重要觀念,Algebraic structure! What's Algebraic structure?...