Tôi muốn viết hàm Haskell đó là hành vi phụ thuộc vào mẫu regex khớp với một trong các đối số. Trong một ngôn ngữ như C/Python/Perl, tôi chắc chắn sẽ chỉ sử dụng một cấu trúc if/else lớn, nhưng tôi không thực sự có tùy chọn đó. Cách Haskell thành ngữ nhất để xử lý điều này là gì?Sử dụng lệnh regexp trong các bảo vệ chức năng haskell
Tôi đã coi bảo vệ, nhưng họ không làm việc: No instance for (Data.String.IsString source0)
:
function arg
| arg =~ "pattern1" = dothis arg
| arg =~ "pattern2" = dothat arg
| otherwise = failwith arg
Các mô hình phù hợp sử dụng trong trường hợp cấu trúc sẽ được hoàn hảo, nếu nó xử lý Regex.
function arg = case arg of
(pattern1 match) -> dothis match
(pattern2 match) -> dothat match
_ -> failwith arg
trong phiên bản sử dụng gaurds, bạn có thể cần chú thích loại rõ ràng, chẳng hạn như 'function :: String -> ReturnType' –