Created
September 17, 2017 08:43
-
-
Save FujiHaruka/d971e33cddbe26c164b80a6fe792d753 to your computer and use it in GitHub Desktop.
side-eff example
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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