簡體   English   中英

您如何閱讀ramda文檔?

[英]how do you read the ramda docs?

我在理解Ramda docs的簽名時遇到麻煩。 例如,如果您查看map則會看到此

Functor f => (a → b) → fa → fb

我看不到這種模式如何適合該示例:

var double = x => x * 2;

R.map(double, [1, 2, 3]); //=> [2, 4, 6]

此示例中的函子是[1,2,3] ,那么如何將它放在Functor f => (a → b) → fa → fbf的簽名中? 另外, 是什么意思?

我將在此處給出一個簡短的答案,但是將更完整的答案分布在一個類似問題的兩個答案中,這些答案又取自Ramda Wiki頁面 (免責聲明:我是該頁面的作者,也是Ramda本身的負責人之一。)

這分為兩部分:

Functor f => (a → b) → f a → f b

在粗箭頭( => )之前,我們對其余部分有約束。 在此示例中,唯一的約束是變量f必須是Functor 函子是一種成員具有遵循某些法律的map方法的類型。 並且聲明是在另一種類型上進行參數化的,因此我們不只是寫f而是寫f Stringf Number或更一般地寫fa來表示一些未知類型a

細箭頭( -> )是Function類型的縮寫。 所以不要寫

Function x y

我們可以改寫

x -> y

或需要避免歧義的時候。

(x -> y)

將它們放在一起,我們可以注意到,在R.map(double, [1, 2, 3]) ,我們具有一個從NumberNumber的函數( double ),這意味着我們的ab都是Number 我們的函子是Array 因此,專業與這些類型的定義,我們有map接受來自函數NumberNumber ,並返回一個函數,數組Number S和返回一個新的數組Number秒。 (這是因為在此系統中->綁定到右側,所以(a -> b -> c)等效於(a -> (b -> c)) 。在Ramda中,所有函數都以這種方式進行管理可以使用任何初始參數集調用它們,直到提供所有術語之前,您都將繼續獲得函數。因此,使用Ramda函數, R.map(double)([1, 2, 3])R.map(double, [1, 2, 3])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM