UP | HOME

NOTE: functional programming 對執行區塊上鎖

functional programming 中讓一個函數執行時與特定鎖結合可以用高階函式確保這個模式不被意外打破

let withLock : mutex -> (a -> b) -> a -> b =
  fun mu f x -> acquire mu; let r = f x in release mu; r

這件事好玩之處在很容易觀察到下面的用法

withLock mu
  (fun _ -> ...)
  ()

進而衍伸出讓區塊轉化成匿名函數的語法糖

withLock mu { ... }

像是把上面的 { ... } 轉化成 fun _ -> ... 。實務上 Kotlin 就有類似的轉換。

Date: 2022-12-07 Wed 00:00
Author: Lîm Tsú-thuàn