Size: a a a

2021 May 02

TZ

Timofey Zakrevskiy in Haskell
Айнштайн, Ляйбниц, Госс, Жакоби...
источник

TZ

Timofey Zakrevskiy in Haskell
Ну и классика таких дебатов, Гексли/Хаксли
источник

AF

Alexey Fedotov in Haskell
В общем, я действительно калькировал с английского, не успев подумать. Но вопросов это по идее вызывать не должно, потому что всем известно, что Декарт и Картезий — это один и тот же человек. Картезием его время от времени называют в том числе и в русских текстах
источник

AP

Aleksei (astynax) Pi... in Haskell
Произведение точно декартово везде
источник

A

Andrey in Haskell
хватит офтопить, может?
источник

MK

Maxim Koltsov in Haskell
+
источник

JJ

Joshua Jakowlew in Haskell
Я все страдаю с sizeOf
Как мне это оформить так, чтобы все тайпчекалось?
источник

MK

Maxim Koltsov in Haskell
А что пишет?
источник

IO

I O in Haskell
Добавить forall a . в начало сигнатуры и включить ScopedTypeVariables, иначе у Вас а в теле никак не связанно с a в сигнатуре
источник

JJ

Joshua Jakowlew in Haskell
Could not deduce (Storable a0) arising from a use of ‘sizeOf’
 from the context: Storable a
   bound by the type signature for:
              readMem :: forall a.
                         Storable a =>
                         Word32 -> ReaderT (PHANDLE, ForeignAddress) IO a
   at C:\Users\jakow\Documents\Programming\cshs\src\GameAPI.hs:21:1-73
 The type variable ‘a0’ is ambiguous
 These potential instances exist:
   instance Storable Word32 -- Defined in ‘Foreign.Storable’
   instance Storable () -- Defined in ‘Foreign.Storable’
   instance Storable Bool -- Defined in ‘Foreign.Storable’
   ...plus five others
   ...plus 82 instances involving out-of-scope types
   (use -fprint-potential-instances to see them all)
• In the second argument of ‘($)’, namely ‘sizeOf (t :: a)’
 In the second argument of ‘($)’, namely
   ‘readProcessMemory pHandle address $ sizeOf (t :: a)’
 In a stmt of a 'do' block:
   ptr <- liftIO $ readProcessMemory pHandle address $ sizeOf (t :: a)
источник

MK

Maxim Koltsov in Haskell
Опять прощай педагогика, эх
источник

JJ

Joshua Jakowlew in Haskell
Да, работает, спасибо. Магия какая-то
источник

MK

Maxim Koltsov in Haskell
Нам с тобой надо 30 секунд чтобы сказать это решение, а новичок останется с магией
источник

IO

I O in Haskell
Да где магия-то? Просто типоперененные упомянутые в сигнатуре никак не связанны с типопеременными в теле, если они не введены с помощью forall и если не включен ScopedTypeVariables. Соответственно у Вас a в теле - новая, никак не связанная со старой a переменная (поэтому ghc называет ее a0 в сообщении об ошибке), для которой  Storable не выполнен - вот и все.
источник

IO

I O in Haskell
.
источник

MK

Maxim Koltsov in Haskell
Вообще-то это поведение довольно неочевидное
источник

к

кана in Haskell
я бы даже сказал что это плохое поведение!
источник

к

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

хочется переменную в определении - значит и биндить ее нужно в определении

но вроде как это до сих пор не завезли, а может уже завезли

но хотя бы вот так можно
qwe (x :: a) = x :: a

а вот так еще нельзя
qwe @a (x :: a) = x :: a

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

VL

Vladimir Lopatin in Haskell
А где можно посмотреть собственно презентацию?
источник

aK

anton K in Haskell
источник