Size: a a a

2021 March 09

АК

Анатолий Кот... in Haskell Start
кана
ну для id k есть coerce в base
я скорее про что-то вроде:
instance Applicative f => Embed Identity f
источник

АК

Анатолий Кот... in Haskell Start
хотя такое проще будет руками написать
источник
2021 March 10

JS

Jerzy Syrowiecki in Haskell Start
Анатолий Кот
те мне нужно что-то вроде такого:

composeMy :: Embed m t => MyTy t b c -> MyTy m a b -> MyTy t a c

те что-бы при композиции, при возможности, один тип лифтился до второго
а потом кто-то захочет Float с Double складывать. здесь так не принято
источник

АК

Анатолий Кот... in Haskell Start
Jerzy Syrowiecki
а потом кто-то захочет Float с Double складывать. здесь так не принято
Как я понимаю, не приняты произвольные конверсии. Но если совместимость описанна в виде констрейнта - то все ок, разве нет?
источник

к

кана in Haskell Start
да там столько тайп аннотаций потребуется, что ничем не будет отличаться от просто явной конверсии
источник

JS

Jerzy Syrowiecki in Haskell Start
Анатолий Кот
Как я понимаю, не приняты произвольные конверсии. Но если совместимость описанна в виде констрейнта - то все ок, разве нет?
всё можно описать в виде конверсий, но я хотел сказать, что в Хаскеле лучше некоторые вещи оставлять явными, не делать типы слишком гибкими. но граница субъективна
источник

к

кана in Haskell Start
Анатолий Кот
Как я понимаю, не приняты произвольные конверсии. Но если совместимость описанна в виде констрейнта - то все ок, разве нет?
ну, должен сказать, что в js тоже все конверсии указаны в спеке, и довольно формально указаны, но люди со стороны все равно горят про 1 + "2"

всегда нужно будет выбрать какие-то дефолты, и всегда люди будут гореть с этих дефолтов

поэтому многие считают, что разумно вообще не делать таких вещей, и пусть все явно все конвертируют, то есть все страдают, а не только те, кто не доволен дефолтами, но зато не нужно изучать дефолты
источник

к

кана in Haskell Start
источник

АК

Анатолий Кот... in Haskell Start
кана
да там столько тайп аннотаций потребуется, что ничем не будет отличаться от просто явной конверсии
да, я как сделал - понял, почему так никто не делает. С добавлением Embed типы, без явных аннотаций, перестали выводиться. Поэтому, вместо того чтобы создавать значение в fromVal :: o -> MyTy Identity i o и потом его приводить к m c помощью Embed Identity m во время композиции, поменял на fromVal :: Applicative m => o -> MyTy m i o, который сам уже унифицируется с нужным m
источник

М

Махо in Haskell Start
источник

М

Махо in Haskell Start
А как можно сделать так чтобы дабл  с инт использовать?
источник

Д

Дон Макароне🦜... in Haskell Start
Int2Double
источник

к

кана in Haskell Start
1. тут solve зря в монаде, просто что никаких эффектов не делается
источник

Д

Дон Макароне🦜... in Haskell Start
из GHC.Double вроде
источник

к

кана in Haskell Start
fromIntegral (1 :: Int) :: Double
1.0
источник

к

кана in Haskell Start
прямо в prelude
источник

М

Махо in Haskell Start
кана
1. тут solve зря в монаде, просто что никаких эффектов не делается
Там по дефолту так стояло
источник

Д

Дон Макароне🦜... in Haskell Start
кана
fromIntegral (1 :: Int) :: Double
1.0
ну или так🤔
источник

IR

IC Rainbow in Haskell Start
Махо
Там по дефолту так стояло
где?
источник

М

Махо in Haskell Start
IC Rainbow
где?
источник