haskell hGetLines 实现

haskell hGetLines implementation

有谁知道我在哪里可以找到

hGetLine :: Handle -> IO Text

功能实现?我必须在 haskell 中实现一个具有多个子任务的 HTTP 服务器。第一个是写一个

的实现
hGetLines :: Handle -> IO [Text]

从 IO 通道读取所有内容直到第一个空行并且这些行作为文本列表返回的函数。

  1. 在 Hackage 上找到它:https://hackage.haskell.org/package/base-4.6.0.1/docs/System-IO.html#v:hGetLine

  2. 点击"source" link:https://hackage.haskell.org/package/base-4.6.0.1/docs/src/GHC-IO-Handle-Text.html#hGetLine

  3. 阅读来源:

    hGetLine h =
      wantReadableHandle_ "hGetLine" h $ \ handle_ -> do
        hGetLineBuffered handle_
    

但是如果你想写一个hGetLines函数,你不需要知道hGetLine是如何实现的。您可以在 hGetLines.

的实现中使用 hGetLine

您不需要知道 hGetLine 是如何实现的:

hGetLines :: Handle -> IO [Text]
hGetLines h = do
  line <- hGetLine h
  if null line
    then return []
    else do
      lines <- hGetLines h
      return (line:lines)