@Fsharp_chat

Страница 316 из 772
Vasily
19.09.2017
15:37:34
Но прекомпиляция же

Arseniy
19.09.2017
15:37:37
Хммм... всегда считал, шо шаблоны - те же макросы
да всё так и есть. это всё война понятий

Vasily
19.09.2017
15:37:39
Или нет?

Friedrich
19.09.2017
15:37:56
Ну и проверки синтаксиса внутри темплейтов делаются. Даже MS с этим в конце концов согласились.

Google
Vasily
19.09.2017
15:38:02
Т.е. условно в нужное место заинлайнится нужный тип

Точнее сигнатура функции с нужным типом

Friedrich
19.09.2017
15:38:20
Т.е. условно в нужное место заинлайнится нужный тип
Да, заинлайнится. Но это не препроцессор! Это другая совсем штука.

Принципиально другая, лучше препроцессора.

Темплейты лучше препроцессора примерно настолько же, насколько концепты лучше безконцептовых темплейтов.

Arseniy
19.09.2017
15:39:08
давайте называть макрос с констрейном из фишарп SRTP, а макрос с кострейном на плюсах метапрограммированием

Pawel
19.09.2017
15:39:44
да всё так и есть. это всё война понятий
да хрен там. макросы ретранслируют текст, а механизм шаблонов - тьюринг-полный подъязык

Arseniy
19.09.2017
15:40:16
да хрен там. макросы ретранслируют текст, а механизм шаблонов - тьюринг-полный подъязык
это вот откуда такое определение? мм? макросы, гомоиконичность, тюрингполнота слышали?

Vasily
19.09.2017
15:40:42
Понеслась

Friedrich
19.09.2017
15:41:17
Pawel
19.09.2017
15:43:52
это вот откуда такое определение? мм? макросы, гомоиконичность, тюрингполнота слышали?
с чем конкретно ты не согласен? что макросы в C/C++ не тьюринг-полные, или что темплейты в C++ тьюринг-поные?

кстати SRTP в F# - это фигня бесполезная чуть более чем полностью

Arseniy
19.09.2017
15:46:06
с чем конкретно ты не согласен? что макросы в C/C++ не тьюринг-полные, или что темплейты в C++ тьюринг-поные?
ну я с определением макросов не согласился. а нащет полных всем и по всему темплейтов я даже не спорил. я тут как раз рассказывал, что на шаблонах плюсов можно делать дофига вещей. в том числе 100% аналогичные фишарпным инлайнам. и вопрос только в том, что одни это занесли с систему типов, а у других система типов уже как 100 лет неформализуемая)

Google
Vasily
19.09.2017
15:46:12
Павел в своем стиле

Evgeniy
19.09.2017
15:46:43
кстати SRTP в F# - это фигня бесполезная чуть более чем полностью
Она позволяет нам писать 2.0 + 2.0 вместо 2.0 +. 2.0. Уже польза!

Friedrich
19.09.2017
15:47:11
Разве это она позволяет? Мне казалось, это просто перегрузка операторов.

Ну, которая и без SRTP есть в F#.

Arseniy
19.09.2017
15:52:15
определения макросов в C/C++ и в лиспе - они разные. А спосылом я согласен. В С++ метапрограммизм сверхмощный, такой мощный, что аж тошнит и глаза на лоб лезут. А в F# его практически нет - и очень хорошо. Меньше говнокода, быстрее компилится
интересно, что исторический предок F# - Ocaml всякие подобные вопросы в своем стиле рулил. и не сказать, что хуже тайпклассов или имплиситов из скалы. модули как объекты первого порядка рулят. жаль только на clr плохо ложится

Evgeniy
19.09.2017
15:53:18
Настолько хорошо, что они решили завезти себе имплиситов.

Pawel
19.09.2017
15:54:02
Arseniy
19.09.2017
15:54:46
Evgeniy
19.09.2017
15:58:09
Friedrich Приеду домой, покажу.

Friedrich
19.09.2017
15:58:20
Ок!

Всё-таки это артефакт реализации, скорее. Но было бы интересно взглянуть.

Pawel
19.09.2017
15:58:38
ну я видно уже упустил момент)
гуманный метапрограммизм имхо тольков D - там не типизированные темплейты с возможностью растановок стат. проверок инстационирования. И сообщенниякомпилятора об ошибках инстационирования - читаемые. И скорость компиляции огонь. Жаль, что кто-то решил его оставить пребывать в маргинальной нише

Evgeniy
19.09.2017
16:07:00
Всё-таки это артефакт реализации, скорее. Но было бы интересно взглянуть.
https://github.com/Microsoft/visualfsharp/blob/master/src/fsharp/FSharp.Core/prim-types.fs#L3438

Я что-то не припомню такого синтаксиса, кстати.

Со специализациями inline фукций.

Все верно: error FS: Static optimization conditionals are only for use within the F# library

Friedrich
19.09.2017
16:14:04
Там такое богатство, и всё его от нас прячуть!

Google
Evgeniy
19.09.2017
16:14:26
На самом деле, пока не представляю, зачем могут понадобиться специализации.

Pawel
19.09.2017
16:15:47
Все верно: error FS: Static optimization conditionals are only for use within the F# library
то есть так не прокатит. Это подтверждает мою мысль о практической бесполезности SRTP или нет?

Evgeniy
19.09.2017
16:16:21
Простой и понятный доброму человеку пример: https://github.com/ForNeVeR/EvilPlanner/blob/dd44d11895b3d61b592fb4599117367ed57c2222/EvilPlanner.Logic/DatabaseExtensions.fs#L15-L33

Если еще допилят вот этот PR, то пользы будет еще больше: https://github.com/Microsoft/visualfsharp/pull/3582

Потом сразу же бы хотелось реализацию вот этого RFC. https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1024-simplify-call-syntax-for-statically-resolved-member-constraints.md

И это уже будет более-менее прилично выглядящая фича.

Arseniy
19.09.2017
16:20:48
https://twitter.com/nikivazou/status/907451058154295297

Pawel
19.09.2017
16:23:14
Если еще допилят вот этот PR, то пользы будет еще больше: https://github.com/Microsoft/visualfsharp/pull/3582
не понятно чем это отличается от тайп-классов и трейтов, кроме более извращённого синтаксиса

Потом сразу же бы хотелось реализацию вот этого RFC. https://github.com/fsharp/fslang-design/blob/master/RFCs/FS-1024-simplify-call-syntax-for-statically-resolved-member-constraints.md
насколько я понял, благодаря inline это юудет как и прежде работать только для своего кода.

не понятно чем это отличается от тайп-классов и трейтов, кроме более извращённого синтаксиса
а, впрочем понял чем - опять таки бесполезностью из-за inline. ни о каком ad-hock полиморфизме опять речи не идёт?

Evgeniy
19.09.2017
16:34:14
а, впрочем понял чем - опять таки бесполезностью из-за inline. ни о каком ad-hock полиморфизме опять речи не идёт?
Но я вон ссылку на PR приложил, который улучшает вывод типов в случае SRTP.

Aleksey
19.09.2017
16:35:09
https://twitter.com/nikivazou/status/907451058154295297
тут всё портит > :) Должно быть primes = nubBy (((> 1) .) . gcd) [2..]

Arseniy
19.09.2017
16:35:59
тут всё портит > :) Должно быть primes = nubBy (((> 1) .) . gcd) [2..]
ну я понятия не имею, с каких пор телеграмм начал эскейпить строки.

так-то в твитте все так и было

Aleksey
19.09.2017
16:36:49
Начал? Мне кажется, это "карточки" твиттера такие - эскейпают служебные символы на всякий случай

Google
Aleksey
19.09.2017
16:37:26
Впрочем это как раз Телеграм может неправильно карточки обрабатывать...

Max
19.09.2017
16:50:54
ну я понятия не имею, с каких пор телеграмм начал эскейпить строки.
хмм, если оборачиваешь в ` все в порядке, сколько тестили, все хорошо

Nikolay
20.09.2017
03:44:24
Печально, что CLR и C# тормозят развитие F# ?

А вообще чисто для F# вносились какие-либо изменения в CLR?

Friedrich
20.09.2017
04:00:18
А вообще чисто для F# вносились какие-либо изменения в CLR?
Это очень сомнительная идея — вносить такие изменения ради конкретного языка. Даже по отношению к флагманскому C# они очень долго обсуждают такие вещи.

А вообще чисто для F# вносились какие-либо изменения в CLR?
В общем-то, последние изменения в CLR вносились в версии 4, и это было очень давно. И они тогда делались не ради конкретного языка, а больше в общем — поменялась модель безопасности и пр. мелочи. Поэтому ответ на твой вопрос — нет, не делались. Но и изменения для C# тоже делались последний раз довольно давно, ещё в версии 2. И участвовал в этом Don Syme :)

Andrew
20.09.2017
05:23:12
С развитием Core теперь что-то фундаментально новое в CLR совсем нескоро сделают

Хотя те же Variadic Generics прям напрашиваются

Friedrich
20.09.2017
06:23:58
Хотя те же Variadic Generics прям напрашиваются
Боюсь, что для этого надо очень большую научную работу проводить, в первую очередь. Где-то есть такие генерики? (шаблоны в C++ не считаются)

Andrew
20.09.2017
06:47:33
В тайпскрипте есть proposal, также слышал про движуху в rust / swift

Ну научная работа, они Microsoft в конце концов или кто? У них Microsoft Research чем ваще занимется? Или так и проживем всю жизнь с кучей Tuple/Action/Func?

Aleksey
20.09.2017
06:59:28
Microsoft Research занимается тем, что им интересно - это практически независимая организация, обязанная лишь отдавать интересные бизнесу наработки собственно Микрософту

> У них Microsoft Research чем ваще занимется? Haskell пилят, например :)

Andrew
20.09.2017
07:03:53
У них уже когда-то был C*, но почему-то заглох

Равно как и Code Contracts

Vlad
20.09.2017
07:04:34
Равно как и Code Contracts
а из-за чего умерли? из-за того, что время компиляции убивали?

Andrew
20.09.2017
07:05:23
Я не представляю. Мы их все еще в паре проектов юзаем, но скорее по привычке

Fill
20.09.2017
08:53:36
Привет. Кто-нибудь делал проект полностью на F#? Имеется ввиду проект с бэкендом на net core и фронтом на Fabel

Мне не даёт покоя идея использовать один ЯП из нет стека повсюду.

Google
Andrew
20.09.2017
08:55:22
наверное @angmarr

Fill
20.09.2017
08:55:47
т.е. у меня есть контроллер, который упраляется андроидом (тут я могу использовать F# на Xamarin), андроид получает команды от сервера, сервер от фронта. И вроде всё можно сделать на одном ЯПе. Вопрос, насколько это здравая идея

Aleksey
20.09.2017
09:01:28
Почти все попытки протащить бэкендовый язык на фронт разбиваются о нехватку либ для этого языка при огромном разнообразии либ для JS. Да и фронтендеры не хотят учить новые языки, как правило

Fill
20.09.2017
09:03:15
Aleksey
20.09.2017
09:04:00
> Вопрос, насколько это здравая идея > Ни на грамм :)

Max
20.09.2017
09:05:00
?
На F# полностью Xamarin не получится, да и это вообще-то на С#-то весьма не просто

kana
20.09.2017
09:07:00
Почти все попытки протащить бэкендовый язык на фронт разбиваются о нехватку либ для этого языка при огромном разнообразии либ для JS. Да и фронтендеры не хотят учить новые языки, как правило
Решается нормальныс интеропом, как в кложе. В итоге на кложурсарипте полно и кложовских либ, и все жс-ные доступны. Потому что язык изначально задумывался как гостевой, на жвм

Aleksey
20.09.2017
09:07:50
Когда интеропишься с либой, где размазанное неявное состояние и типики несходятся - это боль

cljs динамически типизирован

Aleksey
20.09.2017
09:09:45
Если уж хочется "F# в браузере", то можно тупо Elm взять - то же семейство языков, тот же синтаксис плюс-минус. И либы есть уже для типичных задач

А ещё можно не пользовать npm и остальной зоопарк :) Ибо репозиторий пакетов свой, тулинг свой, отладчик свой - всё своё.

Но с интеропом будет БОЛЬ (поэтому и пилят свои пакеты)

Pawel
20.09.2017
09:11:03
если хочется F# в браузере - https://websharper.com/

Aleksey
20.09.2017
09:11:30
Интероп через ботлнек в виде портов - то ещё удовольствие. Зато динамические типики и эксепшны не пролезают - это плюс, конечно

Max
20.09.2017
09:12:53
Igor
20.09.2017
09:13:21
наверное @angmarr
Нет, я не занимаюсь фронтендом вообще, только ReactNative с Fable

Ну, сомнительно
Так и скажи что не пробовал ?

Страница 316 из 772