Size: a a a

2021 February 28

A

Andrey in Haskell
Jerzy Syrowiecki
я слышал, что живая схемка — это Racket
ну, значит, один из трёх
источник

IO

I O in Haskell
GNU/Vsevolod
С ними можно сделать подобное, как в годболте выше?
С таплами немного проблематично, они определены не индуктивно, varargов нет, поэтому рекурсивно добавлять тип в начало тапла без костылей не выйдет.

Можно определить свой тапл aka heterogeneous list, параметризовнный списком типов, так что например HList '[a, b, c] ~= (a, b, c), и использовать как HList (Replicate 10 Int).

Можно определить ad-hoc type family ListToTuple, которая будет преобразовывать '[a, b, c] в (a, b, c), и использовать как ListToTuple (Replicate 10 Int).

(Ну и если цель представить ровно n интов лучше просто взять fixed-size vector)

Гист с кодом: https://gist.github.com/aadaa-fgtaa/aa0ac8375c18c1b56026258fe40e94f2
источник

G

GNU/Vsevolod in Haskell
У кого-то работает форматтер с HLS, поделитесь конфигом редактора? Я пробовал ormolu & brittany, LSP не форматирует код.
upd: оказывается недавно в январе был замержен фикс, что пофиксил работу hls с brittany
источник

G

GNU/Vsevolod in Haskell
I O
С таплами немного проблематично, они определены не индуктивно, varargов нет, поэтому рекурсивно добавлять тип в начало тапла без костылей не выйдет.

Можно определить свой тапл aka heterogeneous list, параметризовнный списком типов, так что например HList '[a, b, c] ~= (a, b, c), и использовать как HList (Replicate 10 Int).

Можно определить ad-hoc type family ListToTuple, которая будет преобразовывать '[a, b, c] в (a, b, c), и использовать как ListToTuple (Replicate 10 Int).

(Ну и если цель представить ровно n интов лучше просто взять fixed-size vector)

Гист с кодом: https://gist.github.com/aadaa-fgtaa/aa0ac8375c18c1b56026258fe40e94f2
Я вообще хочу compile time типы вычислять, как это можно в С++ или расте с процмакросами, не обязательно таплы. Т.е. type family это и делают?
источник

G

GNU/Vsevolod in Haskell
Ну или хотя бы возможность затереть тип а потом как-то ансейфно скастить
источник

IO

I O in Haskell
В принципе да, если вы хотите в компайл тайме функции на типах это к type families
источник

IO

I O in Haskell
Я правда так и не понял типы чего вы хотите вычислять, ну да ладно
источник

ЖК

Жук Короед in Haskell
Вот такой примера из документации printf действительно работает отлично в ghci, но в коде ghc ругается:
printf "%s, %d, %.4f" "hello" 123 pi
источник

ЖК

Жук Короед in Haskell
• Ambiguous type variable ‘t1’ arising from a use of ‘printf’
 prevents the constraint ‘(Text.Printf.PrintfArg
                             t1)’ from being solved.
 Probable fix: use a type annotation to specify what ‘t1’ should be.
...
источник

ЖК

Жук Короед in Haskell
Что сделать, чтобы заработало?
Пробовал уточнить типы аргументов, но толку от этого нет.
источник

AA

A64m AL256m qn<co... in Haskell
Жук Короед
Что сделать, чтобы заработало?
Пробовал уточнить типы аргументов, но толку от этого нет.
возвращаемый тип уточнить
printf "%s, %d, %.4f" "hello" 123 pi :: IO ()

или
printf "%s, %d, %.4f" "hello" 123 pi :: String

попробуйте
источник

ЖК

Жук Короед in Haskell
Все равно не работает, ни первый, ни второй вариант.
источник

ЖК

Жук Короед in Haskell
Попробовал поставить расширения языка как в ghci: Haskell2010, NoDatatypeConexts, _ - не помогло. 👀
источник

AA

A64m AL256m qn<co... in Haskell
да NoDatatypeConexts тут не при чем
источник

G

GNU/Vsevolod in Haskell
https://github.com/haskell/haskell-language-server#language-specific-server-options
Вот тут, в пункте "Formatting provider", написано "if compiled with AGPL" — что это означает?
источник

AA

A64m AL256m qn<co... in Haskell
это ExtendedDefaultRules небось
источник

AA

A64m AL256m qn<co... in Haskell
GNU/Vsevolod
https://github.com/haskell/haskell-language-server#language-specific-server-options
Вот тут, в пункте "Formatting provider", написано "if compiled with AGPL" — что это означает?
либа с лицензией агпл условно используется
источник

ЖК

Жук Короед in Haskell
A64m AL256m qn I0
это ExtendedDefaultRules небось
Действительно! Сработало 👀
источник

AA

A64m AL256m qn<co... in Haskell
попробуйте printf "%s, %d, %.4f" "hello" (123 :: Int) (pi :: Double) прост
источник
2021 March 01

ЖК

Жук Короед in Haskell
Пробовал же 😁
источник