Size: a a a

2021 February 25

MP

Misha Puzanov in Haskell
ну вот это пойдет наверное
источник

JS

Jerzy Syrowiecki in Haskell
robot monkey, AFAIK
источник

JS

Jerzy Syrowiecki in Haskell
Maxim Koltsov
ну или pure / return
а также point
источник

MK

Maxim Koltsov in Haskell
Pointed нету в бейз вроде
источник

JS

Jerzy Syrowiecki in Haskell
когда это было проблемой?
источник

МВ

Максим Воротынский... in Haskell
А как сделать массив из разных типов?
источник

MK

Maxim Koltsov in Haskell
никак
источник

к

кана in Haskell
Максим Воротынский
А как сделать массив из разных типов?
массив или список? и типы известны в компайлтайме?
источник

к

кана in Haskell
и длина списка известна в компайлтайме?
источник

МВ

Максим Воротынский... in Haskell
кана
массив или список? и типы известны в компайлтайме?
Список. Не встречал массивы в хаскеле
источник

МВ

Максим Воротынский... in Haskell
кана
и длина списка известна в компайлтайме?
Длинна нет
источник

МВ

Максим Воротынский... in Haskell
У типов общий тайпкласс
источник

MP

Misha Puzanov in Haskell
Максим Воротынский
А как сделать массив из разных типов?
ответ либо "никак", по определнию
либо гетерогенные штуки, вроде
http://hackage.haskell.org/package/vector-heterogenous-0.2.0/docs/Data-Vector-Heterogenous.html
источник

MK

Maxim Koltsov in Haskell
если общий тайпкласс, то сделать обёртку
источник

MP

Misha Puzanov in Haskell
Максим Воротынский
У типов общий тайпкласс
тогда через existential wrapper
источник

MK

Maxim Koltsov in Haskell
data WithFoo where
 WithFoo :: forall a. Foo a => a -> WithFoo

type Spisok = [WithFoo]
источник

МВ

Максим Воротынский... in Haskell
На примере ООП. Определил общий интерфейс и реализации. Поместиил объекты разных классов в список
источник

MP

Misha Puzanov in Haskell
Максим Воротынский
На примере ООП. Определил общий интерфейс и реализации. Поместиил объекты разных классов в список
ну если вам надо что-то вроде List<X extends Interface> то как раз как пример выше с WithFoo
источник

к

кана in Haskell
решений много:
1. если длина списка и порядок типов известны, то это кортежи. Можно взять любую либу с анонимными произведениями полиморфными, будет что-то вроде

x :: HList [Int, String]
x = 1 ::: "2" ::: Nil

2. если известны типы, но длина неизвестна, то проще всего сумму
data X = XInt Int | XBool Bool
x :: [X]
x = [XInt 1, XBool True]

или взять опять же либу с анонимными суммами

x :: [Union [Int, Bool]]
x = [inj 1, inj True]

3. если типы неизвестны, но известно свойство, и нужно только это свойство, то
class Property a where ...
data SomeProperty = forall a. Property a => SomePropery a
x :: [SomeProperty]


например с show+num
data SomeX = forall a. (Show a, Num a) => SomeX a
x :: [SomeX]
x = [SomeX (1 :: Int), SomeX (2 :: Double)]

-- но использовать можно только известные свойства, например как тут - * и show, больше ничего про значение неизвестно
f :: [String]
f = map (\(SomeX x) -> show (x * 2)) xs
источник

MP

Misha Puzanov in Haskell
а чо HLS 1.0.0 так и не зарелизили? или он до vscode не доехал?
источник