我有以下两个功能:
import qualified Data.Text as T
noneOnEmptyA :: T.Text -> T.Text
noneOnEmptyA txt | T.null txt = "None."
| otherwise = txt
noneOnEmptyB :: [T.Text] -> [T.Text]
noneOnEmptyB txts | null txts = ["None."]
| otherwise = txts
是否可以编写一个函数来 1) 完成什么noneOnEmptyA
,以及 2) 可以提升它以完成什么noneOnEmptyB
?问题的症结似乎在于noneOnEmptyA
检查空文本,同时noneOnEmptyB
检查空列表;但是,noneOnEmptyA
提升以便对列表进行操作(如在fmap noneOnEmptyA
返回 type中[T.Text]
)检查列表中的空文本,而不是检查列表本身是否为空。