簡體   English   中英

是否可以在Haskell中構建Restful API,而無需使用Reader / Writer / State Monad或Monad Transformer

[英]Is it possible to build a Restful API in Haskell without using Reader/Writer/State Monad or Monad Transformer

作為一個初學者,我覺得閱讀器/寫入/狀態Monad很難理解。 而Monad變形金剛則更加困難。 我看不到它們在其他語言中的用法,這使我很難將它們與我現有的Web開發經驗聯系起來。

是否有可能在對初學者友好的Haskell中構建與Postgres對話的Restful API? 無需使用諸如Monads / Monad Transformers這樣的高級內容的含義。

通常可以編寫Haskell程序而無需處理monad轉換器或諸如Reader,Writer和State的各種monad。 您無法避免的一個monad是IO。

例如,從Warp的文檔中查看以下示例代碼:

app :: Application
app req respond = bracket_
    (putStrLn "Allocating scarce resource")
    (putStrLn "Cleaning up")
    $ respond $ responseStream status200 [] $ \write flush -> do
        write $ byteString "Hello\n"
        flush
        write $ byteString "World\n"

這些都是由函數調用和IO monad組成的。 您也可以自由地以這種樣式編寫代碼……它的某些部分看起來與使用其他語言編寫的相同代碼非常相似。 基本上,您編寫了一個帶有兩個參數的函數:一個是HTTP請求,另一個是可以用來編寫響應的參數。 這與WSGI在Python或Go.net中的net.http工作的方式相同。

如果在某個時候您認為monad轉換器是有用的並且可以使您的代碼更簡單,那么以后總是可以嘗試一下。 但是它們絕不是必需的。

暫無
暫無

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

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