Size: a a a

2020 November 20

MP

Misha Puzanov in Haskell
а ghc умеет такие штуки оптимизировать типа
x { foo = 1 } { bar = "bla" } ... ?
источник

MP

Misha Puzanov in Haskell
в смысле убирать промежуточный record
источник

к

кана in Haskell
ого, я даже не думал что так можно
источник

к

кана in Haskell
синтаксис апдейтов это еще одна из самых странных хаскельных вещей
источник

MP

Misha Puzanov in Haskell
кана
ого, я даже не думал что так можно
а я кстати сам не знаю, что так можно, я просто начал думать как мне композить несколько апдейтов и подумал про оптимизации
источник

MP

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

к

кана in Haskell
а как ты посмотришь, тут наверное нужно делать 1000 таких апдейтов и смотреть на память
источник

MK

Maxim Koltsov in Haskell
На кор смотрите
источник

к

кана in Haskell
а кор разве после всех этих оптимизаций будет?
источник

MP

Misha Puzanov in Haskell
кана
а как ты посмотришь, тут наверное нужно делать 1000 таких апдейтов и смотреть на память
в смысле посмотрю что такой синтаксис будет ок
источник

MK

Maxim Koltsov in Haskell
Конечно, в коре вроде нет такого синтаксиса вообще
источник

MK

Maxim Koltsov in Haskell
Могу ошибаться
источник

MP

Misha Puzanov in Haskell
Misha Puzanov
в смысле посмотрю что такой синтаксис будет ок
да, синтаксис ок
источник

к

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

к

кана in Haskell
в корке сразу 5
источник

к

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

к

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

к

кана in Haskell
но это одно поле, сейчас посложнее пример
источник

MP

Misha Puzanov in Haskell
λ 
λ data X = X { i :: Int, s :: String } deriving Show
λ let x = X 2 "aa"
λ :set -ddump-simpl
λ let z = x { i = 1 } { s = "11" }

==================== Simplified expression ====================
GHC.Base.returnIO
 @ [()]
 (GHC.Types.:
    @ ()
    (case Ghci2.x of { Ghci1.X ds_a1M7H ds_a1M7I ->
     (Ghci1.X (GHC.Types.I# 1#) (GHC.CString.unpackCString# "11"#))
     `cast` (UnsafeCo representational Ghci1.X () :: Ghci1.X ~R# ())
     })
    (GHC.Types.[] @ ()))
источник

к

кана in Haskell
но с несклолькими полями тоже все ок
источник