Alexander
ну именно твой пример выглядит сложнее чем должен
Alexander
вообще пользоваться <$> и <*> нормально
Alexander
а блин, я хотел @SINCERELY ответить
melvin
вообще пользоваться <$> и <*> нормально
ну с 3 операндами прочитать еще могу
melvin
а 3+ нет ;_;
melvin
практика вылечит?
Vasiliy
по-моему, норм читается
Alexander
мне кажется что разницы в колве агрументы нет
Alexander
слодности в чтении возникают если там всякие join вокруг и то 1 раз
Ilya
Мне интересно, выкладывай
https://github.com/Toucandy/Index/blob/master/Index.hs в общем вот код, можно поиграться нужно просто сохранить файл и натравить ghci ghci Index.hs
Ilya
пока только списки, массивы и пр. будут потом
Alexander
не надо с такой структурой индекса переопределять для векторов операции :)
Ilya
ну там нужно не [a] -> i, а t a -> i
Ilya
я думаю
Alexander
угу
Ilya
где t будет списком или чем угодно
Ilya
это в планах:)
melvin
можно считать что <$> это просто композиция, а <*> композиция "такая что следующая композиция будет произведена не с аргументом текущей композиции, а со следующим"?
Alexander
или I (forall t . HasLength t => t -> Int)
melvin
Prelude> :t (\x y z -> [x,y,z]) <$> (+3) <$> (*2) <$> (/2) (\x y z -> [x,y,z]) <$> (+3) <$> (*2) <$> (/2) :: Fractional a => a -> a -> a -> [a] Prelude> :t (\x y z -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2) (\x y z -> [x,y,z]) <$> (+3) <*> (*2) <*> (/2) :: Fractional t => t -> [t] вроде такого
melvin
если я правильно понял последовательные <$> производят композицию только относительно первого элемента
Ilya
Alexander
что лучше это или явно вытащить тип структуры в типовой агрумент Index я не знаю
Alexander
ещё меня печалит, что придется переопределять много функций из разных библиотек
Alexander
и что с этим делать и возможно ли я не знаю
Alexander
@int_index signatures и все эти модули могут помочь это решить?
Alexander
вроде нет, без переписывания всего и вся?
Ilya
ещё меня печалит, что придется переопределять много функций из разных библиотек
это да:( как это обойти, я не пока не придумал. Но это переопределение строится по одной и той же схеме, так что может его можно делать как-то автоматически, ну т.е. как-то в духе deriving?
Alexander
TH если только
Ilya
с TemplateHaskell я пока не знаком:) посмотрю
melvin
я пытаюсь в функторах разобратся
Aleksei (astynax)
чем до монадки "упрощать" лучше уж liftA3 взять
Aleksei (astynax)
liftA3 (\x y z -> [x, y, z]) (+1) (*2) (/3)
Aleksei (astynax)
В данном же случае вообще лучше сделать sequenceA [(+1), (*2), (/3)] 😆
Aleksei (astynax)
> :t liftA3 (\x y z -> [x, y, z]) (+1) (*2) (/3) liftA3 (\x y z -> [x, y, z]) (+1) (*2) (/3) :: Fractional t => t -> [t] > liftA3 (\x y z -> [x, y, z]) (+1) (*2) (/3) 9 [10.0,18.0,3.0] > :t sequenceA [(+1), (*2), (/3)] sequenceA [(+1), (*2), (/3)] :: Fractional a => a -> [a] > sequenceA [(+1), (*2), (/3)] 9 [10.0,18.0,3.0]
Ilya
There should be one-- and preferably only one --obvious way to do it 😀
Ilya
я слышал, как хаскель называют "правильным питоном"
Ilya
но меня всегда радует, когда я решаю, каким из четырёх способов делать ту или иную задачу, и все одинаково подходит
Ilya
а потом оказывается, что правильно вообще пятым
Ilya
это шутка была
ну как сказать
Aleksei (astynax)
Нельзя сделать такой язык, где любая задача будет решаться ровно одним способом. Иначе получится HQ9+
Alexander
is HQ9+ turing complete?
Aleksei (astynax)
Нет, просто делает всё, что нужно от языка программировния :)
Max
я слышал, как хаскель называют "правильным питоном"
Хуже того, автор этого выражения здесь в чатике.
Serghei
может он просто так толсто тролил )
Max
Все обиделись на питон? )
Dmitry
а что?
Alexander
/me ничего не понял
Max
Предлагаю либо разжечь, либо забить
Dmitry
ну попробуй разжечь
Dmitry
а то тихо здесь стало
доня.
Alexander
а что такого в этом утверждении
Max
Питон, видимо, не тру
Dmitry
когда у тебя в рантайме разваливается код от того, что в одном месте он пробелами выровнен, а в другом табами - это не очень тру, согласись
Alexander
питон точно не тру, если не скрипты писать
Дима
Признаюсь, иногда тру питона
melvin
Ilya
я недавно вот про что подумал: питон и хаскель во многом похожи, но! питон по дефолту энергичен, но постепенно добавляет ленивый синтакиисс хаскель по дефолту ленив, но постепенно добавляет энергичный синтаксис
Ilya
интересно, как скоро они "встретятся"
Ilya
где-то по середине
доня.
у питона с хаскелем общего примерно ничего
Dmitry
1) import
Евгений
Dmitry
2) идентация
Дима
3) Направление письма
Ilya
4) английские кейворды
доня.
@Masteroid опередил(
melvin
опередил
melvin
Евгений
Блин :(
Евгений
Списки есть!!!