Size: a a a

2021 June 13

к

кана in Haskell
можно вот не только матчить, но и bang-паттерн использовать

По смыслу будет то же самое в этом случае, но при этом конструктор Can в контексте уже будет не обязателен
источник

A

Andrey in Haskell
источник

MK

Maxim Koltsov in Haskell
Можно анлифтед тип использовать :)
источник

MK

Maxim Koltsov in Haskell
Непонятно почему serokell не подписана тема... И почему только один блок, там же вроде два доклада должно было быть
источник

к

кана in Haskell
а как это поможет против отсутствия матчинга?
источник

A

Andrey in Haskell
надо Ясперу написать!
источник

IO

I O in Haskell
{-# LANGUAGE ConstraintKinds, FlexibleInstances, GADTs, MultiParamTypeClasses, QuantifiedConstraints,
            RankNTypes, TypeApplications, UndecidableInstances, UndecidableSuperClasses #-}

module BottomDict where

data Dict c = c => Dict
class    c => Hold c
instance c => Hold c

bottomDictWithoutUnsafe :: Dict c
bottomDictWithoutUnsafe = go
 where
   go :: (Hold c => c) => Dict c
   go = Dict


class CanDelete

myWithCanDelete :: (CanDelete => a) -> a
myWithCanDelete v | Dict <- bottomDictWithoutUnsafe @CanDelete = v


При большом желании можно такой CanDelete даже без ансейфа "взломать"
источник

A

Andrey in Haskell
в партнёрах указаны!
источник

MK

Maxim Koltsov in Haskell
Поможет не передавать андефайнед
источник

к

кана in Haskell
такой CanDelete можно взломать тупа через instance CanDelete
источник

к

кана in Haskell
QuantifiedConstraints конечно все портит
источник

C

Cyberfined in Haskell
Не знаю, насколько хорошая практика так делать. Но мою проблему решит
источник

к

кана in Haskell
не совсем понимаю как он работают вообще
источник

MK

Maxim Koltsov in Haskell
Я не серьёзно, конечно
источник

C

Cyberfined in Haskell
Получается, что самый хороший вариант - тупо матчить или банг паттерны использовать. Иначе придётся использовать шаманство, предложенное выше
источник

MK

Maxim Koltsov in Haskell
Тупо матчить норм вариант
источник

C

Cyberfined in Haskell
Всем спасибо. Буду дальше матчинг использовать
источник

к

кана in Haskell
бтв это все еще сложнее чем undefined)
источник

Q

Qwerty in Haskell
хмм, а хаскел эстетичнее лиспов
источник

[

[BRM]White Rabbit in Haskell
Я кажется понял, почему хаскель хорош для парсинга... Замени стрелочки на =, а | на <|> и получится почти что код парсека какого-нибудь :D
источник