Size: a a a

PureScript — русскоговорящее сообщество

2019 April 28

p

parket in PureScript — русскоговорящее сообщество
Зигохистоморфный Препроморфизм
новый парсер должен улучшить это дело
Это в 0.13? А когда? А не пробовали собрать компилятор из ветки с cst?
источник

p

parket in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
хаха, да, со временем даже как-то привыкаешь к этому и перестаёшь замечать, что это сложно. начинаешь сходу классифицировать и почти сразу "угадывать" что не так
В целом привыкаешь, но иногда все же сидишь, и втыкаешь типы / комментишь чтоб понять где отломалось.
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
кому интересно, чего все есть алгебры
https://twitter.com/xgrommx/status/1121843079726673926
источник
2019 May 02

YP

Yuriy Pachin in PureScript — русскоговорящее сообщество
Как spago haloen v5.0.0-rc.4 поставить? Чет не нашел в доке способ указать версию.
источник

ЗП

Зигохистоморфный Препроморфизм in PureScript — русскоговорящее сообщество
наверное ее можно указать в dhall файла
источник

YP

Yuriy Pachin in PureScript — русскоговорящее сообщество
Гы, в packages.dhall в примерх как подключить свежий halogen.
источник
2019 May 04

AG

Alex Gryzlov in PureScript — русскоговорящее сообщество
источник

p

parket in PureScript — русскоговорящее сообщество
👍
источник
2019 May 09

p

parket in PureScript — русскоговорящее сообщество
Подскажите, как и почему это работает в случае с массивом?

Разве это не impredicative polymorphism? Которого в PS нет?

Со списком ожидаемо не работает, но текст ошибки сбивает с толку.

http://try.purescript.org/?gist=6183cc3901977853c7aeea25e51b3cd7

module Main where

import Prelude
import Data.Maybe
import Data.Array
import Data.List ( List( .. ), (:) )
import Control.Monad.Eff ( Eff )


main :: Eff () Unit
main = pure unit

type Poly = forall a . a -> a

poly :: Poly
poly = \ a -> a

fooA :: Array Poly
fooA = [ poly, poly ]

{-
The type variable a has escaped its scope, appearing in the type

   List (a1 -> a1) -> List (a1 -> a1)
-}
-- fooL :: List Poly
-- fooL = poly : poly : Nil


-- baz :: Maybe Poly
baz :: _
baz = index fooA 0
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
в пурсе вроде есть impredicative polymorphism
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
но узнал я об этом только сейчас
источник

p

parket in PureScript — русскоговорящее сообщество
Vasiliy Yorkin
в пурсе вроде есть impredicative polymorphism
Тогда что не так в примере с List.
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
там он выводит
fooL :: forall a. List (a -> a)
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
хм
источник

p

parket in PureScript — русскоговорящее сообщество
Да, понятно что он выводит. Это нормально. Очевидно, что List Poly - более общий тип, и он сюда как-бы подходит ( если бы полиморфизм был импредикативным ). Просто система вывода не умеет выводить полиморфные типы высших рангов, поэтому выводит
forall a . List ( a -> a )
источник

p

parket in PureScript — русскоговорящее сообщество
Если определить

fooA :: Array Poly
fooA = poly : poly : []


Будет такая же проблема как с List Poly:
   Array (a1 -> a1) -> Array (a1 -> a1)


Проблема в cons:
cons :: forall a. a -> Array a -> Array a


Мы хотим специализировать a как Poly, а для этого нам нужен impredicative polymorphism ( IP )

Это тоже, в общем, понятно.

——

Допустим у нас есть магический конструктор массивов, [], который допускает:
[ poly, poly ] :: Array Poly 

( почему? )

Как тогда выводится
index fooA 0

index :: forall a. Array a -> Int -> Maybe a


Разве мы не пытаемся специализировать a в Poly? Почему это не IP?
источник
2019 May 12

p

parket in PureScript — русскоговорящее сообщество
Собрал компилятор из мастера. Туда уже помержили CST. Стало заметно лучше. Прям ну заметно.

Ошибки точнее, собирает быстрее.

Бинарь прилагается.

Format        : ELF 
Format profile: Executable / AMD x86-64
источник

p

parket in PureScript — русскоговорящее сообщество
Бинарь для x86-64 linux
источник

VY

Vasiliy Yorkin in PureScript — русскоговорящее сообщество
прям на порядки быстрее? или чуть-чуть?
источник