Size: a a a

2020 December 20

MK

Maxim Koltsov in Haskell
Не помню
источник

к

кана in Haskell
Переслано от Alexander Vershilov
module Control.ApplyingVia
 ( (!@)
 , (!!@)
 ) where

import Data.Coerce

(!@) :: (Coercible a' a, Coercible b' b) => (a' -> b') -> (a -> a') -> a -> b
(!@) f _ = coerce f
источник

MK

Maxim Koltsov in Haskell
Ага, типа f !@ Min
источник

к

кана in Haskell
все равно мне мои решения больше нравятся, потому что они мои, но !@ это красиво конечно
источник

MK

Maxim Koltsov in Haskell
foldOfVia конечно самый красивый имхо
источник

R

Roman in Haskell
-- <interactive>:1:1-17: error:
--     • Could not deduce (Equal Bool Int)
--         arising from a use of ‘defaultToInt’
--       from the context: Bool ~ Int


как же гхц вымораживает иногда
источник

R

Roman in Haskell
ну то есть какая-то предпосылка очевидно является ложной. И гхц не может из ложной предпосылки заключить, что Equal Bool Int выполняется
источник

R

Roman in Haskell
хотя очевидно, что из ложной предпосылки выполняется что угодно
источник

MK

Maxim Koltsov in Haskell
Много хочешь)
источник

R

Roman in Haskell
это как предоставить Void, но не предоставить \case{} и какой-либо возможности его эмулировать
источник

к

кана in Haskell
очень странно, ghc же должно быть все равно, ложная предпосылка или нет, именно для этого же коершины как полупервоклассные сущности и нужны
источник

к

кана in Haskell
что такое Equal?
источник

к

кана in Haskell
а стоп, ну да, много хочешь
источник

к

кана in Haskell
выполняется-то что угодно, но нужно указать как это выполнить
источник

к

кана in Haskell
разве в агде будет работать что-то вроде

x : (1 = 2) -> (10 = 20)
x refl = refl

?
источник

R

Roman in Haskell
кана
разве в агде будет работать что-то вроде

x : (1 = 2) -> (10 = 20)
x refl = refl

?
пишешь x () и все
источник

к

кана in Haskell
хм
источник

к

кана in Haskell
удивительно
источник

R

Roman in Haskell
полный код (без прагм):


type Equal :: forall a b. a -> b -> Constraint
class Equal x y
instance Equal x x

type (~?~) :: forall a b. a -> b -> Constraint
class    (x ~~ y => Equal x y) => x ~?~ y
instance (x ~~ y => Equal x y) => x ~?~ y

-- >>> :t defaultToInt True
-- <interactive>:1:1-17: error:
--     • Could not deduce (Equal Bool Int)
--         arising from a use of ‘defaultToInt’
--       from the context: Bool ~ Int
--         bound by a quantified context at <interactive>:1:1
--     • In the expression: defaultToInt True
defaultToInt :: a ~?~ Int => a -> a
defaultToInt = id
источник

к

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