В http://lisperati.com/haskell/ht4.html автор показывает функции, которые читают полигоны из простого файла SVG. Я понимаю большую часть кода, однако я задавался вопросом, можно ли переписать функцию
let readPoint :: String -> Point
readPoint s | Just [x,y] <- matchRegex (mkRegex "([0-9.]+),([0-9.]+)") s = (read x,read y)
в более понятной форме. Я обнаружил, что эта строка немного озадачена, так как охранники должны работать с параметрами функции (в данном случае "readPoint" ), но здесь защита, очевидно, работает с результатом matchRegex.
Так может кто-нибудь объяснить магию за этим?
И можно ли это переписать в более понятную форму?