Navigation Menu

Skip to content

Instantly share code, notes, and snippets.

@FujiHaruka
Created September 17, 2017 08:43
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save FujiHaruka/d971e33cddbe26c164b80a6fe792d753 to your computer and use it in GitHub Desktop.
Save FujiHaruka/d971e33cddbe26c164b80a6fe792d753 to your computer and use it in GitHub Desktop.
side-eff example
const SideEff = require('side-eff')
// グローバル変数
let message = ''
class Message extends SideEff {
// 副作用のあるメソッド
affect (payload) {
message += payload + '\n'
}
}
{
// 純粋な関数たち
const add5 = (num) => new Message(num + 5, 'Add 5')
const multiple2 = (num) => new Message(num * 2, 'Multiple 2')
const square = (num) => new Message(num * num, 'Square')
// メソッドチェーンで最終的に計算結果を受け取る
const result = new Message(1, 'Start')
.affectThen(add5)
.affectThen(multiple2)
.affectThen(square)
.unwrap()
console.log(result)
// 144
console.log(message)
// Start
// Add 5
// Multiple 2
// Square
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment