簡體   English   中英

Haskell:測試列表長度是否小於4

[英]Haskell: test if list length < 4

我有以下haskell函數,如果String小於4個字符,則返回Nothing

  stringToMove :: String -> Maybe Move
  stringToMove [] = Nothing
  stringToMove [a] = Nothing
  stringToMove [a, b] = Nothing
  stringToMove [a, b, c] = Nothing
  stringToMove (l1:n1:l2:n2:rest) = Just (stringToCoords l1 n1, stringToCoords l2 n2)

我可以對length string測試,但據我所讀,這不是編寫此代碼的haskell方法,因為如果String很長,則將對所有String進行求值。

是否有一種優雅的書寫方式,而不必在每行中重復Nothing

  stringToMove :: String -> Maybe Move
  stringToMove (l1:n1:l2:n2:rest) = Just (stringToCoords l1 n1, stringToCoords l2 n2)
  stringToMove _ = Nothing

我只是想插話,如果您有很多這樣的檢查並且想返回Maybe ,則可以使用do表示法:

stringToMove :: String -> Maybe Move
stringToMove s = do
    l1:n1:l2:n2:_ <- return s
    return (stringToCoords l1 n1, stringToCoords l2 n2)

您可以根據需要執行多次失敗的綁定,如果綁定失敗,該函數將返回Nothing

暫無
暫無

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

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