iT邦幫忙

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

技術 Purely Function 的平行化 (1)

拜 摩爾定律 所賜,現在的計算資源越來越強,有越來越多的程式可以分散地、平行化 (parallelism) 的運行,平行運行下的程式勢必會遇到諸如 race c...

鐵人賽 Software Development DAY 14

技術 純粹的 functional 狀態 (3)

對最初的 rollDie function 有什麼影響 延續 昨天 最後設計的產生非負數且小於特定值的隨機數 nonNegativeLessThanViaFla...

鐵人賽 Software Development DAY 13

技術 純粹的 functional 狀態 (2)

更多的練習 Exercise D13-1 用 RNG.nextInt 來產生非負的隨機數,範圍介於 0 <= r <= Int.maxValue。...

鐵人賽 Software Development DAY 12

技術 純粹的 functional 狀態 (1)

這幾天會使用 隨機數字產生器 來介紹 functional programming 如何操作狀態變更,我們就能學會如何讓那些有狀態的程式純粹化,進而符合 Ref...

鐵人賽 Software Development DAY 11

技術 Strictness 和 Laziness (3)

LazyList 細部處理拆解 講進階用法之前,先來看一下 LazyList 是怎麼處理 LazyList(1, 2, 3, 4).map(_ + 10).fi...

鐵人賽 Software Development DAY 10

技術 Strictness 和 Laziness (2)

現在來看一下如何解決一下 昨天 所提到的問題:將所有轉換一次處理,避免建立暫時用的 List。 LazyList LazyList 就是 List lazine...

鐵人賽 Software Development DAY 9

技術 Strictness 和 Laziness (1)

想像一下你想要使用 List 來做一系列的資料操作, scala> List(1, 2, 3, 4).map(_ + 10).filter(_ % 2 =...

鐵人賽 Software Development DAY 8

技術 如何不拋出例外的處理錯誤 (3)

該怎麼讓舊的 function 兼容 Option (Either 也適用) 也許你用的 function 在很多地方都用到,改變原 function 的定義影...

鐵人賽 Software Development DAY 7

技術 如何不拋出例外的處理錯誤 (2)

Option 資料型態 enum Option[+A]: case Some(get: A) case None 昨天 那些瞎 g8 問題的解法就是讓...

鐵人賽 Software Development DAY 6

技術 如何不拋出例外的處理錯誤 (1)

我們在 Day 2 - 什麼是 Funcational Programming? 有提到拋出 exception 是某種 side effect ,倘若 exc...

鐵人賽 Software Development DAY 5

技術 Functional 資料結構 (3)

更多的練習 Exercise D5-1 前一天 的 foldRight 是從 List 的最右邊往左推進,想當然爾,當然也有從左邊開始的 foldLeft, 也...

鐵人賽 Software Development DAY 4

技術 Functional 資料結構 (2)

在 Functional 資料結構中的資料分享 當資料為不可變的情況下,可以的話我們會希望能夠重用所有資料,盡量減少複製情況發生,就稱做 資料分享 (data...

鐵人賽 Software Development DAY 3

技術 Functional 資料結構 (1)

Day 3 - Functional 資料結構 (1) functional 資料結構 (functional data structure) 就是只使用 pu...

鐵人賽 Software Development DAY 2

技術 什麼是 Functional Programming?

什麼是 Functional Programming? 簡言之就是沒有 side effect (副作用) 的 function,也就是一種純粹無暇的沒有副作用...

鐵人賽 Software Development DAY 1

技術 混天數用的前言

用 Scala 3 寫的 Functional Programming 會長什麼樣子? Functional Programming,三大設計範示之一,其開發思...

鐵人賽 Modern Web DAY 29

技術 Day 29 :總結 & 那些未完待續的 FP

在文章系列的尾聲,我們大致複習一下究竟什麼是 FP 呢?先前我們曾經提到過,透過 FP 設計模式產出的程式碼會有以下特色: 透過純函數(Pure Functi...

鐵人賽 Modern Web DAY 28

技術 Day 28 :第三方函式庫 (3):從 Ramda.js 深入了解 JavaScript

與 Lodash.js 類似, Ramda.js 是一個專門以 FP 模式設計出來的函式庫,與 Lodash 不同的是,Ramda 所提供的函式預設就已經柯里化...

鐵人賽 Modern Web DAY 27

技術 Day 27 :第三方函式庫(2):從 Lodash.js 深入了解 JavaScript

Lodash 這個函式庫中,提供了高達上百種的方法,有些方法可以說是原生 JavaScript 的加強版,或是將原有的原型方法包裝成純函式。 除了在實務開發時,...

鐵人賽 Modern Web DAY 26

技術 Day 26 :第三方函式庫(1):初識Lodash.js

在先前的章節中,我們了解到要如撰寫純函式、科里化,甚至是透過高階函式與複合函式的手段,讓我們的函式重組性、復用性更高。 但如果到目前為止,這些概念對於你來說,都...

鐵人賽 Modern Web DAY 25

技術 Day 25:高階函數與複合函數(3):reduce 實用方法

在 FP 中,會發現我們其實沒有那麼常使用 for、forEach ,更多時候是使用 filter 與 map 陣列方法,因為在 FP 這個設計模式中,為了讓程...

鐵人賽 Software Development DAY 13
大閘蟹料理指南(rust) 系列 第 13

技術 [D13] Functional Programming in Rust

Functional Programming 寫在如何使用 functional programming(之後都簡稱FP)之前, 我們得先來看看為什麼我們要這樣...

鐵人賽 Modern Web DAY 24

技術 Day 24:高階函數與複合函數(2):科里化陣列方法

陣列方法可以說是 JavaScript 中最常使用的計算工具,不論是資料的處理,或是畫面的呈現,都少不了陣列方法。 在了解高階函式與複合函式的概念後,我們來試著...

鐵人賽 Modern Web DAY 23

技術 Day 23 :高階函數與複合函數(1):進階的函數應用

在先前的章節中,我們透過不同的工具及概念來讓大家理解 FP 在做些什麼事,舉例來說,在 Immutable 的章節我們大量使用 map 與 filter 的方法...

鐵人賽 Modern Web DAY 22

技術 Day 22 :什麼是 Currying(4)?自己動手寫一個 Curry 吧!

在先前的文章中,我們花了很多的時間來討論閉包,這是為什麼呢?因為在 FP 中,如果我們想要更有效率、更嚴謹的方法來撰寫函式,了解函式在呼叫堆疊中的運行模式可以說...

鐵人賽 Modern Web DAY 21

技術 Day 21 :什麼是 Currying(3)?JavaScript 閉包

當說到閉包時,大家會有什麼樣的想法呢?是覺得它不太會在日常開發中出現,所以很少用,還是單純把閉包當成是一個面試題而已? 經過先前的章節介紹,我們了解到其實 Ja...

鐵人賽 Software Development DAY 12
Functional Programming with C# 系列 第 12

技術 Day12. Record(2)

昨天大概介紹了record的功能,今天來介紹一下可以怎麼使用。 觀察資料流程 假設今天有一個csv格式的資料,我想要把他整理成容易使用的方式 var csv =...

鐵人賽 Software Development DAY 16

技術 重構 Resource Layer - Fold : 在雙軌的盡頭處理 Error - Day16

在Service Layer 與 Repo Layer的處理過程中,會利用到 map, flatMap, zip 來 compose Either,最後通常會...

鐵人賽 Software Development DAY 11
Functional Programming with C# 系列 第 11

技術 Day11. Record(1)

昨天講到了不可變的集合,今天再介紹C#中另一個具有不可變特性的的元素-Record,進入用C#寫FP的重點了! 基本介紹 如何建立一個Record // 跟...

鐵人賽 Modern Web DAY 20

技術 Day 20 :什麼是 Currying(2)?JavaScript Call Stack

在前一章節中,我們了解到 JavaScript 從我們撰寫出來,到可以被執行這個過程中,其實在背後會發生很多事,其中就包含能優化 JavaScript 單執行緒...

鐵人賽 Modern Web DAY 19

技術 Day 19:什麼是 Currying(1)?瀏覽器運作簡介

在先前的章節中,我們了解了 FP 一個最基礎的概念:純函式,其實光是了解及在自己的專案中實作 純函式,就可以讓程式碼乾淨不少,但在 FP 這個設計模式中,我們還...