Line

Packhouse Line

Curry Function

Curry Function是個「將一個接受 n 個參數的 function,轉變成 n 個只接受一個參數的 function」的過程,JavaScript的Array就是經典的Curry Function表現,範例如下:

let boys = ['boy', 'girl'].concat(['boy', 'girl']).filter(s => s === 'boy')

但Packhouse的Curry實現完全不是這樣 😰。

Property

Install、Request都是針對inputTool Property,對於執行Line的驗證。

而Response是針對output的驗證。

Install的行為在每次呼叫時都會執行,對Line來說每一次都是新的開始。

let line = {
    input: 'function',
    output: 'function',
    layout: 'tools',
    install: 'function',
    request: 'array',
    response: 'string'
}

How To Use

為了擁有對付高度複雜性的功能,Line的定義並不輕鬆,Store是Line的主要共享狀態物件。

每次執行時Store都會是一個全新的對象,Tool則會永久保持最後設定的狀態。

下列範例會看見只有在output時才真正回傳結果,而其他的動作代表next的行為。

Invoke

Line不存在noGood、always等Pre-Invoke行為,也必須丟入一個初始值觸發input,相對的並不需要在最後中Invoke行為中給予任何參數,詳情請見Invoke

Last updated

Was this helpful?