Size: a a a

2021 March 24

JS

Jerzy Syrowiecki in Haskell
Dmitriy Mozhevitin
Добрый день
Подскажите плз по тайпклассу Buildable
У меня есть его инстанс для оберточки, которая представляет собой ошибку, который выглядит как

newtype MyError = MyError (NonEmpty Text)
build (MyError errs) = unlinesF ["some error description", ...]

Нужно в одном из случаев вызвать error , передав туда ошибку, определенную выше, но инстанс show для нее стоковый, поэтому ее описание будет достаточно стремным. Почему-то решил, что инстанс Buildable это то что мне нужно, потому что он судя по всему конструирует  человекочитаемое описание ошибки

Но только вот если я пишу error . build , HLS ругается на

Couldn't match type ‘Data.Text.Internal.Builder.Builder’
                with ‘Text’

Видимо нужна какая-то терминирующая операция, чтобы из builder'а получить сам объект, но по-моему это и есть build

Вопрос можно сформулировать просто - как сделать чтоб это заработало? 😅
можете код выложить на Gitlab Snippet или Gist?
источник

JS

Jerzy Syrowiecki in Haskell
Dmitriy Mozhevitin
Добрый день
Подскажите плз по тайпклассу Buildable
У меня есть его инстанс для оберточки, которая представляет собой ошибку, который выглядит как

newtype MyError = MyError (NonEmpty Text)
build (MyError errs) = unlinesF ["some error description", ...]

Нужно в одном из случаев вызвать error , передав туда ошибку, определенную выше, но инстанс show для нее стоковый, поэтому ее описание будет достаточно стремным. Почему-то решил, что инстанс Buildable это то что мне нужно, потому что он судя по всему конструирует  человекочитаемое описание ошибки

Но только вот если я пишу error . build , HLS ругается на

Couldn't match type ‘Data.Text.Internal.Builder.Builder’
                with ‘Text’

Видимо нужна какая-то терминирующая операция, чтобы из builder'а получить сам объект, но по-моему это и есть build

Вопрос можно сформулировать просто - как сделать чтоб это заработало? 😅
Buildable — это вообще откуда? из какого пакета?
источник

DM

Dmitriy Mozhevitin in Haskell
Jerzy Syrowiecki
Buildable — это вообще откуда? из какого пакета?
источник

DM

Dmitriy Mozhevitin in Haskell
видимо, отсюда
источник

DM

Dmitriy Mozhevitin in Haskell
Jerzy Syrowiecki
можете код выложить на Gitlab Snippet или Gist?
да, секунду
источник

DM

Dmitriy Mozhevitin in Haskell
источник

JS

Jerzy Syrowiecki in Haskell
Dmitriy Mozhevitin
видимо, отсюда
зачем вы это используете, если не уверены, что это такое?
источник

DM

Dmitriy Mozhevitin in Haskell
Нужно допилить существующий код, не более
источник

YS

Yan Shkurinskiy in Haskell
Как бы не распилить его незнанием)
источник

DM

Dmitriy Mozhevitin in Haskell
Справедливо
источник

DM

Dmitriy Mozhevitin in Haskell
Всячески стараюсь этого не сделать
источник

JS

Jerzy Syrowiecki in Haskell
Dmitriy Mozhevitin
Добрый день
Подскажите плз по тайпклассу Buildable
У меня есть его инстанс для оберточки, которая представляет собой ошибку, который выглядит как

newtype MyError = MyError (NonEmpty Text)
build (MyError errs) = unlinesF ["some error description", ...]

Нужно в одном из случаев вызвать error , передав туда ошибку, определенную выше, но инстанс show для нее стоковый, поэтому ее описание будет достаточно стремным. Почему-то решил, что инстанс Buildable это то что мне нужно, потому что он судя по всему конструирует  человекочитаемое описание ошибки

Но только вот если я пишу error . build , HLS ругается на

Couldn't match type ‘Data.Text.Internal.Builder.Builder’
                with ‘Text’

Видимо нужна какая-то терминирующая операция, чтобы из builder'а получить сам объект, но по-моему это и есть build

Вопрос можно сформулировать просто - как сделать чтоб это заработало? 😅
build :: a -> Builder
toLazyText :: Builder -> Text
источник

JS

Jerzy Syrowiecki in Haskell
мне кажется, если на типы посмотреть, то сразу видно, как сделать Text
источник

DM

Dmitriy Mozhevitin in Haskell
Благодарю
источник

S

Sooqa in Haskell
помогите провести санити чек кода
источник

S

Sooqa in Haskell
{-# LANGUAGE RankNTypes, MultiParamTypeClasses, FlexibleInstances, TypeFamilies, TypeOperators, DataKinds, StandaloneKindSignatures, FlexibleInstances, QuantifiedConstraints, FlexibleContexts, ConstraintKinds, KindSignatures, ScopedTypeVariables, UndecidableInstances, MultiParamTypeClasses, GADTs, ExistentialQuantification, TupleSections, NamedFieldPuns, UnicodeSyntax, PolyKinds, LambdaCase, PartialTypeSignatures, KindSignatures, TypeFamilyDependencies, UndecidableSuperClasses, FunctionalDependencies, ImpredicativeTypes, AllowAmbiguousTypes #-}

type CSat = () :: Constraint
type CNSat = Int ~ Bool
type family OfKind a b where
  OfKind a (b :: a) = CSat
  OfKind a (b :: m) = CNSat
type family OfType a b where
  OfType a a = CSat
  OfType a b = CNSat


fu :: OfKind * t => t -> t
fu = id
_ = fu 0 -- Ok, Int is *
_ = fu Either -- OK???? WUTTTT????!!!!!! Either is * -> * -> *

-- m :: *
-- m = Either
источник

S

Sooqa in Haskell
OfKind должен работать так как я думаю?
источник

к

кана in Haskell
CSat и CNSat это конечно какой-то прикол
источник

к

кана in Haskell
почему бы просто бул не возвращать и потом не проверять что функция ~ True
источник

A

Andrey in Haskell
какого-нибудь PolyKinds не хватает
источник