Size: a a a

2021 January 13

D

Dreamerinnoise in Haskell Start
String = [Char]
источник

АК

Анатолий Кот... in Haskell Start
Aragaer
а насколько будет нормальным вместо [ 'ë', 'é', 'è', 'ê'] написать "ëéèê"?
у меня во втором случае пишет
Ambiguous type variable ‘t7’ arising from the literal ‘"ôö"’
prevents the constraint ‘(Data.String.IsString
(t7 Char))’ from being solved.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Aragaer
а насколько будет нормальным вместо [ 'ë', 'é', 'è', 'ê'] написать "ëéèê"?
Это одно и то же же. Нормально
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Анатолий Кот
у меня во втором случае пишет
Ambiguous type variable ‘t7’ arising from the literal ‘"ôö"’
prevents the constraint ‘(Data.String.IsString
(t7 Char))’ from being solved.
Потому что включили OverloadedStrings
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Теперь любой строковый литерал "foo" — это не [Char], а IsString a => a
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Используйте явный список символов
источник

к

кана in Haskell Start
ну или указывать тип

("foo" :: String)
источник

A

Aragaer in Haskell Start
ну в таком случае уже проще список. А есть ли возможность локально отключить расширение?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Локально — нет. Только помодульно
источник

AP

Aleksei (astynax) Pi... in Haskell Start
А касательно "проще", то кмк лучше сразу взять пакет вроде unicode-transforms, нормализовать и отбросить модификаторы...
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Пакет позволяет превратить

    00C1    LATIN CAPITAL LETTER A WITH ACUTE

в

    0041    LATIN CAPITAL LETTER A
    0301    COMBINING ACUTE ACCENT
источник

AP

Aleksei (astynax) Pi... in Haskell Start
А дальше нужно просто оставить вот эти вот LATIN
источник

IK

Ilya Kos in Haskell Start
Анатолий Кот
Добрый день, можно ли в хаскеле как-то несколько паттернов на одной строчке уместить?
Те вместо
normalizeFrChar = \case
                   'ë' -> 'a'
                   'é' -> 'a'
                   'è' -> 'a'
                   'ê' -> 'a'
                   ...
написать что-то вроде
...
case 'ë' | 'é' | 'è' | 'ê' => 'e'
...
Я провобал добавить https://wiki.haskell.org/MultiCase - но у меня ghc это расширение не подключает
А у вас не возникнет проблемы с тем, что одна буква (é, например) не обязательно является одним Char?
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Ilya Kos
А у вас не возникнет проблемы с тем, что одна буква (é, например) не обязательно является одним Char?
Обычно является. Нужно очень постараться, чтобы не являлась.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Французские буковки точно влезут
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Ilya Kos
А у вас не возникнет проблемы с тем, что одна буква (é, например) не обязательно является одним Char?
Проблемы могут быть со String, но может автор вопроса уже Text использует?
источник

TA

Tel Asc in Haskell Start
Вопрос прозвучит как что-то не совсем конкретное,но есть ли способы в Haskell каким-то образом использовать две монады параллельно?
Что-то вроде такого:
pbind :: (m a,g b) -> (a -> b -> (m c,g d)) -> (m c,g d).
Есть вариант сделать m,g трансформерами с IO,и передавать a,b в  IO,сначала сохранив их в IORef,а потом считывая  их из переменных.
Но это такое себе,но даже если отбросить как таковую чистоту,то все равно это не очень хорошее решение ,как мне кажется будет по скорости,и хотелось бы вариант побыстрее.
источник

AP

Aleksei (astynax) Pi... in Haskell Start
Трансформеры работают достаточно быстро
источник

AP

Aleksei (astynax) Pi... in Haskell Start
И это идиоматичный способ
источник

AP

Aleksei (astynax) Pi... in Haskell Start
И что значит "параллельно"? Трансформеры и работают параллельно — оба эффекта сохраняются при биндинге
источник