iT邦幫忙

functional programming相關文章
共有 288 則文章
鐵人賽 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 成一個更強大的計算函式。 但問題就來了,當兩個函式...

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

技術 JavaScript Arrow Function(箭頭函式)

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

鐵人賽 Software Development DAY 13

技術 Day 13 - Semigroup II & Monoid

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

鐵人賽 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?...

鐵人賽 Modern Web DAY 10
Javascript 從寫對到寫好 系列 第 10

技術 Day 10 - Functional Programming 初探 (3) - 實戰購物車流程

前言 這兩天花了滿多心力在介紹 FP 的觀念跟方法,但其實大部分都停留在理論,或者教科書上的那種 apple、banana 的練習,大家都是在職場上走跳的,把理...

鐵人賽 Modern Web DAY 9

技術 Day 9 - Functional Programming 初探 (2) - Currying 與 Composition

前言 今天會繼續來聊聊 FP 的一些重要觀念,而且會更偏向實際的做法,看看 Javascript 怎麼結合昨天聊到的 First-class、HoF、pure...

鐵人賽 Software Development DAY 9

技術 Day 09 - Type Signature

yo, what's up? 到目前為止,目前我們把最基本的概念 pure function, curry, compose 到比較進階概念 lens, tra...

鐵人賽 Modern Web DAY 8

技術 Day 8 - Functional Programming 初探 (1) - HoF 與 Side Effects

前言 Functional Programming 其實是我相對不熟的主題,但因為在寫一些較難的程式時,往往會突然感受到有這些神奇的力量存在(?),再加上現在...

鐵人賽 Software Development DAY 8

技術 Day 08 - Transduce II

review 上一篇介紹了 transduce 基本概念後,就可以知道 transduce 就是對資料結構進行 transform 並 reduce, 其核心...

鐵人賽 Software Development DAY 7

技術 Day 07 - Transduce I

從一個簡單的問題開始 假設我們目前有一組長度為一百萬的陣列,需要將陣列內的每個數值乘三並且只保留偶數,那我們會如何實作這簡單的問題? 根據上面的問題,我們在實作...