@Fsharp_chat

Страница 93 из 772
Летучая
02.05.2017
19:49:01
Всё скрыть

Google
Летучая
02.05.2017
19:49:41
вкладкам наверн границы ток надо

Roman
02.05.2017
19:50:04
Всё скрыть
<body style="display:none">....</body>

Вкладки можно срыть в мобильной версии.

Летучая
02.05.2017
19:50:58
А как переключаться между код блоками?

Или в жопу

Roman
02.05.2017
19:53:19
А как переключаться между код блоками?
код на мобилках выглядит так себе, так что пока их тоже стоит скрыть.

А про "узнать больше" можно поматывать вниз до секции "почем F#", м?

Летучая
02.05.2017
20:12:11
Хорошая идея :)

Evgeniy
03.05.2017
04:48:06
https://blogs.msdn.microsoft.com/dotnet/2017/05/02/announcing-the-net-framework-4-7-general-availability/

Friedrich
03.05.2017
05:32:34
C# 7 это только в VS17?
Ну, если без костылей — то да.

Так-то наверняка можно и в старых версиях студии через пакет Roslyn компилировать (он интегрируется с MSBuild). Но редактировать код в старых студиях будет неудобно, потому что они же про новые фичи не знают.

Igor
03.05.2017
07:25:48
Народ, если хочется потыкать ReactJS/Native, то какой язык лучше выбрать если JS очень не нравится?

Google
Akhmed
03.05.2017
07:27:28
попробуй Fable

F# то бишь

https://github.com/fable-compiler/fable-react_native-demo

Igor
03.05.2017
07:30:25
попробуй Fable
Ожидаемо)) Да уже попробовал, тупо не смог собрать это пример. Он сделал под Windows там build.cmd и в build.fsx прописаны пути типа “C:\Program Files…” и тд, а у меня macOS.

Akhmed
03.05.2017
07:32:38
а отсюда пробовал?

https://github.com/fable-compiler/fable-react

The mirror
03.05.2017
07:42:07
KotlinJS?

Igor
03.05.2017
07:42:40
Тайпскрипт еще говорят норм
Да, на не пока и пишу. Не очень нравится, тк у него функциональная парадигма не очень развита и более вербозна. Sum type какие-то кривые, патерн-матчинга нет.

KotlinJS?
Это вместе с scalajs / clojurescript оставляю на конец (не хочется вляпываться в настройку язык + reactnative). Смотрел еще PureScript но он уже очень похож на Haskell, imho это минус.

The mirror
03.05.2017
07:45:10
Elm?

ClojureScript :)

Igor
03.05.2017
07:46:31
Elm?
Кстати вариант, но разве он не только для описания UI используется? Бизнес логику там можно будет написать?

The mirror
03.05.2017
07:47:01
Вот не знаю, сам не писал ничего на нем, пару раз слышал, что более-менее

Правда еще слышал, что много бойлерплейта

Посмотри доклады, на fpconf вроде был один про него

The mirror
03.05.2017
07:48:23
https://www.youtube.com/channel/UCmiGqOz-jojsWUVXLZJ8mCw/search?query=elm

Google
Roman
03.05.2017
07:49:00
issue я завел ?
Я в gitter отписался мне указали на issue

Igor
03.05.2017
07:54:47
Я в gitter отписался мне указали на issue
Хм, я вроде посмотрел список всех и не нашел.

Igor
03.05.2017
09:17:45
Там нету sum type. Это union type!
А в чем различия?

Friedrich
03.05.2017
09:18:59
А в чем различия?
Множество значений sum type представляет собой *сумму* значений входящих типов, а для union type — *объединение*. Соответственно, sum<int, int> ≡ A of int | B of int. А union<int, int> ≡ int.

Sum type ещё иногда называют "tagged unions", а union type называют "untagged unions".

Оба имеют применение в теории типов, хотя про sum type чаще говорят почему-то.

Evgeniy
03.05.2017
09:20:39
@fvnever Что?

Почему sum -- это tuple?

Friedrich
03.05.2017
09:20:54
Ой

Да, наврал.

Friedrich
03.05.2017
09:21:21
(поправил)

Кортеж это product, да.

Igor
03.05.2017
09:22:24
Shape = | Circle | Reactangle В F# это sum или union?

Friedrich
03.05.2017
09:22:35
Это чистый tagged union.

Т.е. sum type.

Evgeniy
03.05.2017
09:23:52
@fvnever Мне кажется, ты что-то упускаешь.

Friedrich
03.05.2017
09:24:05
Да вроде бы нет. Ты же сам недавно мне статью показывал.

Igor
03.05.2017
09:24:09
А это в TypeScript? class Google { constructor(readonly email: string) { } } class Facebook { constructor(readonly number: string) { } } type Account = Google | Facebook

Google
Friedrich
03.05.2017
09:24:20
А это union type.

Evgeniy
03.05.2017
09:24:25
Разве union types не являются по сути просто sum types но без тегов?

Friedrich
03.05.2017
09:24:53
Разве union types не являются по сути просто sum types но без тегов?
Да, плюс у них общие значения не дублируются.

Evgeniy
03.05.2017
09:25:15
А, это важно, да.

Понял.

Friedrich
03.05.2017
09:25:30
В TS без strict null checks каждый тип населяется также значениями null и undefined.

И без тегов ты в дальнейшем не сможешь никак узнать, из какого же тега они взялись.

Igor
03.05.2017
09:26:37
А это union type.
Я не понимаю в чем отличие от этого кода в F#: type Google = { email: string } type Facebook = { number: string } type Account = Google | Facebook по использованию это одно и тоже

Admin
ERROR: S client not available

Friedrich
03.05.2017
09:26:53
На мой взгляд, смысл этих выражений отличается.

Ну, в той же мере, в которой tagged union отличается от untagged :(

Igor
03.05.2017
09:28:02
Ну, в той же мере, в которой tagged union отличается от untagged :(
Это нифига не объясняет, где разница в функционале? У них все поля разные.

Evgeniy
03.05.2017
09:29:14
@angmarr А что ты хотел этим F# кодом показать?

Он совсем не то же самое делает, что TS код.

Igor
03.05.2017
09:29:50
Friedrich
03.05.2017
09:30:04
Это нифига не объясняет, где разница в функционале? У них все поля разные.
1. В F# ты всегда можешь узнать, какой у тебя тег был использован при создании переменной. В TS ты не всегда это можешь узнать (см. кейс с null / undefined). 2. Проверка типов в TS возможна не всегда, даже если не рассматривать краевые случаи.

Evgeniy
03.05.2017
09:30:12
Ты не можешь, например, сделать: let a: Account = {email = "foo@bar.com"}

Igor
03.05.2017
09:30:57
Ты не можешь, например, сделать: let a: Account = {email = "foo@bar.com"}
Это какие-то частные случаи, обусловленные совместимостью с JS, а концептуально где разница?

Evgeniy
03.05.2017
09:31:17
Потому что в твоем F# коде тип Account и типы Google/Facebook живут отдельно.

Google
Friedrich
03.05.2017
09:31:46
@angmarr а ты схитрил и обманул нас невалидным кодом!

Evgeniy
03.05.2017
09:32:03
Ага.

Friedrich
03.05.2017
09:32:09
Правильно на F# будет type Account = Google of Google | Facebook of FaceBook

И вот это очень важно.

Igor
03.05.2017
09:32:18
Friedrich
03.05.2017
09:32:27
Я считаю, что этим самым ты вводишь в свой домен эти конструкторы.

Т.е. у тебя есть не только типы, но и конструкторы для типа-суммы теперь. Отдельная бизнес-сущность такая.

Evgeniy
03.05.2017
09:32:54
@angmarr Нельзя.

Igor
03.05.2017
09:33:06
@angmarr Нельзя.
У меня комплируется

Evgeniy
03.05.2017
09:33:30
В F#?

Friedrich
03.05.2017
09:33:35
@angmarr Нельзя.
Ты уверен, что вы один язык обсуждаете? %)

Evgeniy
03.05.2017
09:33:53
Я уже нет.

Friedrich
03.05.2017
09:33:57
В TS это скомпилируется, а в F# не скомпилируется. Вот и разница.

Ну и в TS этот тип никакого оверхеда не добавляет (именно потому, что дополнительной фичи для проверки типов нет).

Ты можешь встроить теги в типы, и тогда проверка типов будет доступна.

Nikolay
03.05.2017
09:36:01
Тайпскрипт норм

Пиши на нём

Friedrich
03.05.2017
09:36:06
У TS философия такая — оверхеда должно быть как можно меньше.

Evgeniy
03.05.2017
09:36:45
@angmarr Не компилируется в F#: type Google = { email: string } type Facebook = { number: string } type Account = Google | Facebook let a : Account = {email = "foo@bar.baz"}Компилируется в TS: class Google { constructor(readonly email: string) { } } class Facebook { constructor(readonly number: string) { } } type Account = Google | Facebook let x: Account = new Google("foo@bar.baz")

Чтобы не было недопонимания.

Черт!

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