Size: a a a

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

2019 May 21

p

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

p

parket in PureScript — русскоговорящее сообщество
Хотя это ничем не отличается от "если бы мы просто использовали UUID как ключ"
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
parket
Хотя это ничем не отличается от "если бы мы просто использовали UUID как ключ"
Да, вместо HasUUID можно Data.Newtype.unwrap использовать.  И lookup ( liftEntity $ ToDir "file1" ) mymap и lookup ( liftEntity $ ToFile "file1" ) mymap не проверяют "ограничение" ключа — оба сработают несмотря на то, в мапе лежит типа файл (если не проверять его тип отдельно).
источник

p

parket in PureScript — русскоговорящее сообщество
Anton Kotenko
Да, вместо HasUUID можно Data.Newtype.unwrap использовать.  И lookup ( liftEntity $ ToDir "file1" ) mymap и lookup ( liftEntity $ ToFile "file1" ) mymap не проверяют "ограничение" ключа — оба сработают несмотря на то, в мапе лежит типа файл (если не проверять его тип отдельно).
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
О, теперь интересно, спасибо!
источник

p

parket in PureScript — русскоговорящее сообщество
Можно объединить в один класс
источник

p

parket in PureScript — русскоговорящее сообщество
То что размазано по HasUUID и по FsTag
источник

p

parket in PureScript — русскоговорящее сообщество
Anton Kotenko
О, теперь интересно, спасибо!
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
мб можно попробовать ещё определить свой кайнд и типы

foreign import kind FSTag

foreign import data File ∷ FSTag
foreign import data Dir ∷ FSTag
foreign import data Symlink ∷ FSTag

newtype UUID (tag ∷ FSTag) = UUID String

не знаю что из этого выйдет, мб ничего
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Ещё забавно, что я пропустил, что можно просто писать derive instance теперь, раньше было больше извращений
источник

p

parket in PureScript — русскоговорящее сообщество
Anton Kotenko
Ещё забавно, что я пропустил, что можно просто писать derive instance теперь, раньше было больше извращений
;)
источник

p

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

p

parket in PureScript — русскоговорящее сообщество
Anton Kotenko
кажется, Common это как раз версия newtype Leibniz a b = Leibniz (forall f. f a -> f b) из статьи.
Вовсе нет :)
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
а может не фигню, не знаю, короче можно вот так ещё, наверное http://ix.io/1JF8
т.е конструкторы эти все (file, dir) экспортируются, а конструктор UUID нет
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
parket
Вовсе нет :)
Да, пригляделся, был не прав
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
а может не фигню, не знаю, короче можно вот так ещё, наверное http://ix.io/1JF8
т.е конструкторы эти все (file, dir) экспортируются, а конструктор UUID нет
в твоих вариантах ключ в Map не "тэгирован", как я понимаю
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
можно тэг перенести в ключ, если хочется
type Value = Int
data Key = Key Item String
+ Eq, Ord для Key
type Storage = Map Key Item
...
sec
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
да, надо подумать, тоже присмотрюсь, с kind решение может красивее оказаться
источник

AK

Anton Kotenko in PureScript — русскоговорящее сообщество
спасибо вам, есть выбор)
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
http://ix.io/1JFh, с тэгом в ключе
источник