簡體   English   中英

pure x =(\\ _-> x)`是什么意思?

[英]What is the meaning of `pure x = (\_ -> x)`?

我正在讀取Applicative的函數實例,並遇到了一行

instance Applicative ((->) r) where  
  pure x = (\_ -> x)  
  f <*> g = \x -> f x (g x)

我了解語法,但不了解第二行的含義。

我的理解是:部分應用的函數((->) r)獲取一個值並將該值包裝到上下文中,該上下文包含始終返回該值的函數。

為什么它不只通過將部分應用的函數應用於該x來計算結果,然后才將結果存儲在Applicative上下文中?

函數實例的pure(<*>)簽名為

pure :: a -> ((->) r a)  
(<*>) :: ((->) r (a -> b)) -> ((->) r a) -> ((->) r b)  

將(->)編寫為中綴運算符可得出

pure :: a -> (r -> a)  
(<*>) :: (r -> (a -> b)) -> (r -> a) -> (r -> a)

所以pure是采用類型的參數的函數a ,並返回一個函數,它類型的參數r並返回類型的值a
由於在寫pure時我們不能知道r的類型,因此我們只能提供一個返回給pure的參數的函數。

暫無
暫無

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

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