@haskellru

Страница 1090 из 1551
Евгений
14.04.2018
08:00:38
В "коде" не должно быть лигатур, ибо это редактор с их поддержкой а приори будет тормозить

Yuuri
14.04.2018
08:01:05
Тут утверждение вида "A это X, вот B тоже X"
"Подобие/сходство A и B в свойстве X"

Ну и до кучи, какое свойство кода нарушают лигатуры? Он компилироваться перестаёт или что?

Google
Евгений
14.04.2018
08:04:46
Потому что за о(1) быстрее чем за о(n*ln n)?

Yuuri
14.04.2018
08:05:50
Ну и ещё одно религиозное чувство оскорблю: кодошрифт вообще не обязан быть моноширинным. Доказано книжками Бёрда, например.

Потому что за о(1) быстрее чем за о(n*ln n)?
Одно объяснение окложурительнее другого. Что где o(1) и o(n*ln n)?

Leonid
14.04.2018
08:18:42
Зануды...

Yuuri
14.04.2018
08:30:28
Он первый начал!

Ладно, вернусь в онтоп: стряхивал пыль со старого кода времён до monad proposal и обнаружил ошибку компиляции из-за того, что forM сотоварищи теперь работают с любыми Traversable. Можно ему скормить конкретный инстанс, не прописывай весь тип целиком? Ну и без oldForM = forM :: [a] -> <...> use `oldForM` luke

Смутно помнится какое-то расширение с @-нотацией

kana
14.04.2018
08:47:50
TypeApplications



Yuuri
14.04.2018
08:50:17
Спасибо

Vladimir
14.04.2018
08:51:54
Да ладно, к type classes прикрутили явную аппликацию? Их вроде не для того делали ;)

Google
Denis
14.04.2018
08:52:20
это не связано с type classes

kana
14.04.2018
08:52:34
не к тайпклассам forM :: forall t m a b. ... => ...

Denis
14.04.2018
08:53:59
Есть такое увтерждение, что для любого сколь-нибудь серьёзного Хаскельного проекта (или проектов) нужно держать свою кастомную Prelude. И вокруг этого утверждения идут горячие споры, кто-то всецело за свою Prelude, кто-то, напротив, говорит, что это лишняя работа, которая усложнит вход в проект. Что думаете? Есть смысл в своей Prelude?

Denis
14.04.2018
08:54:50
не держим, брат жив

чуть больше импортов копипастить

Alexander
14.04.2018
08:55:15
кастомная прелюда зло

но если лень писать импрты и есть много лишнего времени на её поддержку то можно

может повысить качество кода и его однородность

Denis
14.04.2018
08:55:58
я сам тоже не очень люблю кастомность в этом вопросе

Alexander
14.04.2018
08:56:06
особенно для новичков (которые умеют читать код рядом, я не копипастить со стековерфлоу)

Denis
14.04.2018
08:56:10
я бы сказал что если очень аккуратно подойти, то можно

но не нужно

и сколько у вас в твиге новичков и откуда инфа?!

kana
14.04.2018
08:57:38
абсолютно противоположная альтернатива - не использовать никаких прелюдий вообще, импортить вообще все и квалифицированно/явно

Denis
14.04.2018
08:59:09
содом какой-то предлагаете

Denis
14.04.2018
08:59:22
и сколько у вас в твиге новичков и откуда инфа?!
О да, у них в Твиге прям новичок на новичке... ???

Alexander
14.04.2018
09:00:29
а блин я ещё опять base/prelude путаю

Denis
14.04.2018
09:01:32
а они связаны неразрывно энивей

Google
kana
14.04.2018
09:03:12
содом какой-то предлагаете
есть такой язычек, живут они там более менее хорошо

Denis
14.04.2018
09:03:40
есть такой язычек, живут они там более менее хорошо
я и говорю, есть город такой - Содом, живут там более менее

Alexander
14.04.2018
09:10:08
постмортем по инфраструктуре уже был?

Yuuri
14.04.2018
09:10:11
а они связаны неразрывно энивей
Прелюдия и база - основные орудия, Кто крепче них неразрывно связан? Говорим "база" - подразумеваем "прелюдия", Говорим "прелюдия" - подразумеваем "база"!

A64m
14.04.2018
09:38:00
еще одну фичу вмерджили, которую в 8.4 не смогли, потому что 8.0 не компилировал этот код. Все же глюкавость у 8.0 была выше гхц-ной нормы

Alexander
14.04.2018
10:05:42
это все стек виноват

сами придумайте почему

но это точно

Leonid
14.04.2018
10:30:20
постмортем по инфраструктуре уже был?
Вроде нет https://blog.hackage.haskell.org/

Alexander
14.04.2018
10:32:21
кстати при каком ghc стек то появился?

Leonid
14.04.2018
10:42:28
7.8 или 7.10

Alexander
14.04.2018
10:42:43
тогда все сходится

Denis
14.04.2018
10:52:34
Друзья, а напомните пожалуйста, как сделать так, чтобы при использовании undefined вылетало предупреждение?

Alexander
14.04.2018
10:59:46
определить свой undefined?

c {-# Warning "undefined" "bla" #-}

или использовать дырки вместо undefined

или hlint натравливать

Denis
14.04.2018
11:03:10
ок, спасибо

Дмитрий
14.04.2018
11:40:25
У меня вопрос, вот допустим, я хочу из хаскеля создать мягкую ссылку на файл/диркторию. Или изменить то, куда ссылается существующая ссылка, как я могу это сделать? Кроме того, интересует возможность сравнения двух ссылок (ссылки равны, если ссылаются на один и тот же файл), за ранее благодарю.

kana
14.04.2018
11:43:16
сделать легко: https://hackage.haskell.org/package/unix-2.7.2.2/docs/System-Posix-Files.html#g:9 #!/usr/bin/env stack {- stack --resolver lts-11.1 --install-ghc runghc --package base --package unix -} import Control.Applicative (liftA2) import System.Posix.Files (createSymbolicLink, readSymbolicLink) main :: IO () main = do writeFile "1" "hello" createSymbolicLink "1" "1_1" createSymbolicLink "1" "1_2" print =<< liftA2 (==) (readSymbolicLink "1_1") (readSymbolicLink "1_2")

Google
kana
14.04.2018
11:43:46
сравнить тоже легко - следующая функция

Дмитрий
14.04.2018
11:46:42
Ага, благодарю, это ровно то, что мне нужно!

А если я хочу потом содержимое этой ссылки открыть в какой-то программе, чем мне это лучше сделать. На ум приходит только шелли...

kana
14.04.2018
11:51:27
под содержимым ссылки ты понимаешь путь до файла, на который ссылается, или содержимое файла, на который ссылается?

Дмитрий
14.04.2018
11:52:12
Под содержимым ссылки я подразумеваю файл. Допустим, я хочу открыть картинку в просмотрщике...

Alexander
14.04.2018
11:53:21
тогда нужно сделать exec просмотршика и передать ему путь

kana
14.04.2018
11:53:22
по моему современные системы и так открывают ссылку правильно, не уверен что понял вопрос

Alexander
14.04.2018
11:53:28
как и в любом другом языке

Дмитрий
14.04.2018
11:54:30
по моему современные системы и так открывают ссылку правильно, не уверен что понял вопрос
я хочу вызвать внешнюю программу, передав ей ссылку как аргумент...

Alexander
14.04.2018
11:54:37
если много с операций как в шеле то шел или туртл могут уменьшить бойлерплейт

Admin
ERROR: S client not available

Дмитрий
14.04.2018
11:54:56
https://www.stackage.org/lts-11.5/package/shelly-1.7.2

Вот, что приходит на ум.

Denis
14.04.2018
11:55:11
Ну черепашка же

Alexander
14.04.2018
11:55:17
да хоть process

Дмитрий
14.04.2018
11:56:24
А что за черепашка?

Alexander
14.04.2018
11:56:34
Shelly и turle уменьшают бойлерплейт если вы баш в Haskell превращаете

Дмитрий
14.04.2018
11:58:06
Shelly и turle уменьшают бойлерплейт если вы баш в Haskell превращаете
Тут скорее обратный путь хаскель превращается в баш. Но главная цель всё же не в этом. Благодарю.

Alexander
14.04.2018
11:59:12
но ещё раз повторюсь что чтобы запустить достаточно библиотеки process

Imants
14.04.2018
13:05:58
но ещё раз повторюсь что чтобы запустить достаточно библиотеки process
*реклама* Для вдохновения: используется один process: https://hackage.haskell.org/package/dmc

Google
Ilya
14.04.2018
13:11:17
Есть какой-нибудь стандартный тип данных, чтобы хранить функции произвольной арности a -> a -> a -> a -> ... -> a -> a?

пока придумалось такое data F a = N (a -> F a) | C a, например plus = N (\x -> N (\y -> C (x + y)))

kana
14.04.2018
13:11:48
я правда немного упростил - убрал лишний поинтфри и лишний экволити. Мб он не лишний, но я не понял, нафига он {-# LANGUAGE FlexibleContexts #-} {-# LANGUAGE FlexibleInstances #-} {-# LANGUAGE FunctionalDependencies #-} {-# LANGUAGE MultiParamTypeClasses #-} {-# LANGUAGE UndecidableInstances #-} module Words where class Variadic a r c | c -> r where liftV :: ([a] -> r) -> c instance Variadic a r r where liftV build = build [] instance Variadic a r c => Variadic a r (a -> c) where liftV build arg = liftV $ \args -> build (arg : args) unwordsV :: Variadic String String f => f unwordsV = liftV unwords sumV :: Variadic Int Int f => f sumV = liftV (sum :: [Int] -> Int) showSumV :: Variadic Int String f => f showSumV = liftV (show . sum :: [Int] -> String) main :: IO () main = do print $ unwordsV "abc" "de" "f" print $ sumV (1 :: Int) (2 :: Int) (3 :: Int) print $ showSumV (1 :: Int) (2 :: Int) (3 :: Int)

Выше решение systemspace А, тип

Ilya
14.04.2018
13:12:04
пока придумалось такое data F a = N (a -> F a) | C a, например plus = N (\x -> N (\y -> C (x + y)))
но не хочется самому велосипедить если наверняка такое уже есть

Ilya
14.04.2018
13:20:40
Выше решение systemspace А, тип
да, нужен тип. А что есть systemspace?

Denis
14.04.2018
13:21:04
Kirill
14.04.2018
13:21:15
Есть ещё вот такая штука https://hackage.haskell.org/package/universum-1.1.0/docs/Universum-VarArg.html

Ilya
14.04.2018
13:21:20
кто это? и чего именно это решение?

какой-то задачки?

Denis
14.04.2018
13:22:20
какой-то задачки?
Есть такой ресурс codewars

И там была такая ката

Ilya
14.04.2018
13:22:26
не слышал...

ката = задача?

kana
14.04.2018
13:22:37
да

Ilya
14.04.2018
13:22:53
а можно ссылку на кату тогда уж?

Denis
14.04.2018
13:23:26
а можно ссылку на кату тогда уж?
Там же поиск есть вроде

kana
14.04.2018
13:24:05
https://www.codewars.com/kata/one-function-many-arguments-haskell-style возможно она

да, она

Ilya
14.04.2018
13:24:16
Там же поиск есть вроде
было бы условие каты, я бы его вбил в поиск:)

kana
14.04.2018
13:24:16
а решение выше - просто обобщение, позволяющие делать из неполивариадик функций поливариадик

Ilya
14.04.2018
13:24:20
да, она
благодарю

Страница 1090 из 1551