簡體   English   中英

使用應用風格的應用仿函數是否真的獨立?

[英]Are applicative functors composed with the applicative style really independent?

我來了解仿函數,applicative仿函數和monad如下:

  • 函數:可以映射的計算。
  • 應用仿函數: 獨立計算,其結果可以組合在一起。
  • Monad :(可能但不一定)可以鏈接的依賴計算。

但是,有一些關於Applicative的東西與我的理解相沖突......這是一個Haskell示例,它是在使用應用程序樣式的更基本的解析器的基礎上定義的解析器:

(,) <$> parseName <*> parseEmail

兩個解析器parseNameparseEmail效果不是獨立的,因為它們都使用來自相同輸入流的標記,例如

Jubobs jubobs@jubobs.io

parseEmail只能使用parseEmail未使用的parseName 那么,如何說這兩個計算是獨立的呢?

這里的獨立性並不是說一個計算無法檢測到其他計算已經運行 - 也就是說,不應該是parseName對parseEmail沒有影響的情況。 相反,你不能使用應用 (由parseName解析的名稱)來選擇下一個運行的應用計算 :你只能解析一般的電子郵件,而不是解析一個電子郵件地址,同時檢查它不是包含已解析的名稱。

另一種方法是,如果你只使用應用函數,你的計算的整體“形狀”是提前預先確定的:你將始終解析一個名字,然后是一個電子郵件地址。 如果您使用了monadic函數,則可以根據先前解析的結果決定接下來要解析的內容,以便在運行時更改計算的形狀。

暫無
暫無

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

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