Size: a a a

2021 May 13

N

Nikita Ursol in Haskell
ой
источник

[

[BRM]White Rabbit in Haskell
Переходим на вим!
источник

OS

Oleksandr Shyshko in Haskell
чтобы результат этого code snippet рисовался в оверлее (не изменял исходный код), автоматом (без клика Evaluate/Refresh)
источник

[

[BRM]White Rabbit in Haskell
Неа вроде
источник

OS

Oleksandr Shyshko in Haskell
но всё равно классная штука
источник

OS

Oleksandr Shyshko in Haskell
благодарю
источник

IK

Ivan Kretov in Haskell
Товарищи, а какой самый лёгкий тип вообще доступный в haskell? Лёгкий по весу в смысле
источник

IK

Ivan Kretov in Haskell
int8?
источник

N

Nikita Ursol in Haskell
Bottom
источник

N

Nikita Ursol in Haskell
источник

IO

I O in Haskell
Любые типы-перечисления (без полей), например data Bool = False | True. В куче лежат общие для всей программы значения False и True, все булы просто указатель на них, соотв одно слово
источник

IK

Ilya Kos in Haskell
Void
источник

IO

I O in Haskell
Ну строго говоря он весит одно слово, как и любое другое перечисление, указатель-то все-таки на него держать надо
источник

IK

Ilya Kos in Haskell
Есть тип, который “весит" меньше?
источник

IO

I O in Haskell
(# #) по идее
источник

IK

Ilya Kos in Haskell
👍
источник

IK

Ivan Kretov in Haskell
Тут в общем дилемма такая:

Поскольку невозможно написать что то типа:
[TypeGradeBlock "Advanced Level GCE" ["B","A","A*"], TypeGradeBlock "Unified State Exam" [1..100]]
то необходимо придумать какой то общий тип для списков.

А вот во что это можно всучить, то ли в text, то или в ещё что то - непонятно
источник

IO

I O in Haskell
Тут по-моему главный вопрос в том, что потом с таким списком делать надо. Если только печатать — храните себе в виде строки.

Если нужно много разных операций, например и печатать, и сравнивать типа isBetterGrade :: a -> a -> Bool, e.g isBetterGrade 100 50 = True, isBetterGrade "A*" "A" = True, я бы сделал класс

class Show a => Grade a where
 isBetterGrade :: a -> a -> Bool

instance Grade Int ...
instance Grade Text ...  -- better data MyGrade = B | A | AStar

и хранил экзистенциал

data TypeGradeBlock a = ...
data SomeGradeBlock = forall a . Grade a => SomeGradeBlock (TypeGradeBlock a)

list :: [SomeGradeBlock]
list = [SomeGradeBlock $ TypeGradeBlock "Advanced Level GCE" ["B","A","A*"], SomeGradeBlock $ TypeGradeBlock "Unified State Exam" [1..100]]

Тогда после матчинга по SomeGradeBlock какой именно у нас a мы не знаем, но знаем, что он инстанс Grade
источник

IK

Ivan Kretov in Haskell
Спасибо огромное! Попробую
источник

IK

Ivan Kretov in Haskell
возможно есть очевидное решение, а как сделать так, чтобы функция map вела себя как either?
источник