Кажется, мне не удается сортировать строки с Фей. Я понимаю, что это связано с тем, что Fay не поддерживает классы типов, но, похоже, реальной боли, если это не работает ...fay: можно сортировать строки?
import Prelude
main :: Fay()
main = print $ sort ["a", "c", "b"]
выход:
fay: ghc:
Test.hs:4:16:
No instance for (Ord [Char])
arising from a use of `sort'
Possible fix: add an instance declaration for (Ord [Char])
In the second argument of `($)', namely `sort ["a", "c", "b"]'
In the expression: print $ sort ["a", "c", "b"]
In an equation for `main': main = print $ sort ["a", "c", "b"]
Я не могу определить экземпляр для класса typeclass сам, если я правильно понял, поскольку Fay не поддерживает классные классы (плюс, я думаю, если бы это было возможно, разработчики Fay сделали бы это для начала). Итак, есть ли обходной путь, или я должен делать JS FFI для сортировки строк?
EDIT: ответ от Ян Кристиансен кажется правильным: можно сортировать с помощью "SortBy", это кажется правильным на первый взгляд:
import Prelude
main :: Fay()
main = print $ sortBy strComp ["a", "c", "b"]
strComp :: String -> String -> Ordering
strComp (_:_) [] = GT
strComp [] (_:_) = LT
strComp [] [] = EQ
strComp (x:xs) (y:ys)
| x < y = LT
| x > y = GT
| otherwise = strComp xs ys
Чтобы быть скомпилирован с:
fay --html-wrapper Sort.hs