Size: a a a

PureScript — русскоговорящее сообщество

2021 October 08

SO

Sash Osh in PureScript — русскоговорящее сообщество
прямо уж из-за этого одного
источник

SO

Sash Osh in PureScript — русскоговорящее сообщество
там все же основная нагрузка это работа виртуал дом
источник

SO

Sash Osh in PureScript — русскоговорящее сообщество
который наполовину unsafe написан ради производительности)
источник

EG

Evgeny Gazdovsky in PureScript — русскоговорящее сообщество
да =) свои железки, свой сервер на расрберри  CoM своя сенсорная панель настенная, десктопные приложения все это конфигурить и мобильное всем этим управлять после
источник

EG

Evgeny Gazdovsky in PureScript — русскоговорящее сообщество
полный фуллстэк
источник
2021 October 09

SG

Serge S. Gulin in PureScript — русскоговорящее сообщество
А зачем тогда обертка браузера? Из-за webrtc?
источник
2021 October 24

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
Привет, а подскажите  плз какой толк от наличия кайндов если нету gadt?

data PrimitiveKind

foreign import data Bool_Kind :: PrimitiveKind
foreign import data String_Kind :: PrimitiveKind

data Primitive :: PrimitiveKind -> Symbol -> Type
data Primitive k a =
 SBool(SProxy a)
 | SString(SProxy a)

getBool :: forall r r' l
 . IsSymbol l
 => Cons l Boolean r' r
 => Primitive Bool_Kind l
 -> { | r }
 -> Boolean
getBool (SBool p) o = get p o


Как мне без gadt связать SBool и Bool_Kind?
источник

VK

Vladimir Klntsky in PureScript — русскоговорящее сообщество
В ST используется foreign import кайнд
источник

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
попробуй равенство по Лейбницу для эмуляции
источник

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
А я смогу потом Generic Rep использовать с лейбницом ?
источник

ЗП

Зигохистоморфный Пре... in PureScript — русскоговорящее сообщество
какой код ты ожидаешь?
источник

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
Ща сек)
источник

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
На окамловском


module type Field = {
 type t
 type r
 type meta
 let get: r => t
 let set: (r, t) => r
}
type obj =
 | Obj
type  arr =
 | Arr
type nullable =
 | Nullable
type 't primitive =
 | SInt: int primitive
 | SFloat: float primitive
 | SString: string primitive
 | Sbool: bool primitive
type ('t,'r,_) t =
 | Primitive: 't primitive* (module Field with type t = 't and type r = 'r)
 -> ('t primitive,'r,'t) t
 | SObject: ('s,'t,'k) t array*
 (module Field with type t = 't and type r = 'r) -> (obj,'r,'t) t
 | SArr: ('k,'r,'t) t* 't array*
 (module Field with type t = 't array and type r = 'r) -> (arr,'r,'t array)
 t
 | SNull: ('k,'r,'t) t* 't option*
 (module Field with type t = 't option and type r = 'r) ->
 (nullable,'r,'t option) t

Что то тип такого, там есть ppx, я создаю type user и в итоге генерю schema с списком из из его полей и Field это гетер и сеттер

И вот хочется на пурсе сделать что то похожее, есть type user , через Generic Rep я создаю тоже такую вот схему только вместо геттера и сеттера там будет просто указание на label поля
источник

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
ладно ща лучше на хаскелевемсокм перепишу а то так не понятно наверное для этого чата
источник

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
Короче смешение хаскеля и пурсы

Имея

data Obj = Obj
data Arr = Arr

data Primitive a where
 SInt :: Primitive Int
 SString :: Primitive String
 SBool :: Primitive Bool

data Schema k l where
 SPrimitive :: Primitive k -> SProxy l -> Schema (Primitive k) l
 SObject :: [Schema s l] -> SProxy l -> Schema Obj l
 SObjectRoot :: [Schema s l] -> Schema Obj l
 SArray :: Schema k l -> SProxy l -> Schema Arr l

type fullName = { name: String }
type user = {
age: Int
}

Через Generic rep получить что то такое


test = SObjectRoot [
   SPrimitive SInt (SProxy :: SProxy "age"),
   SObject [
     SPrimitive SString (SProxy :: SProxy "name")
   ] (SProxy :: SProxy "fullName")
 ]
источник
2021 October 29

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
Вот) Я вернулся в общем


data Lens a b = Lens { get :: a -> b
                    , set :: b -> a -> a
                    }

data SchemaKind a = Primitive a | Obj | Arr | Null

data Primitive a where
 SInt :: Primitive Int
 SString :: Primitive String
 SBool :: Primitive Bool
 SFloat :: Primitive Float

data SchemaListItem t = forall s k. SchemaListItem (Schema s t k)

data Schema t r t2 where
 SPrimitive :: Primitive t -> Lens r t -> Schema ('Primitive t) r t
 SObject ::[ SchemaListItem t ] -> Lens r t -> Schema 'Obj r t
 SArray ::  Schema k r t -> Lens r [t] -> Schema 'Arr r [t]
 SNull :: Schema k r t -> Lens r (Maybe t) -> Schema 'Null r (Maybe t)

Мне нужно вот это как то пурскриптизировать и я так понимаю что на месте Lens должен появиться как раз Cons
источник

p

parket in PureScript — русскоговорящее сообщество
источник

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
Да но основная идея в том что например  имея


data FullName = FullName { name :: String, surname :: String  }

data User = User { fullName :: FullName, age :: Int, len :: Float }

Получить с помощью Generic

SObject[
   SchemaListItem (SPrimitive(SInt) ageLens),
   SchemaListItem (SPrimitive(SFloat) lenLens),
   SchemaListItem (SObject[..….] fullNameLens)
 ]

И вот смогу ли я в том числе использовать Лейбница для этого?
источник

p

parket in PureScript — русскоговорящее сообщество
Ты можешь восстановить тип, но нет проверки на полноту.
источник

GP

Gleb Patsiia in PureScript — русскоговорящее сообщество
Я смогу прям указать в функции где то


handleObject :: Schema 'Obj r t -> …
источник