@Fsharp_chat

Страница 95 из 772
Ilya
04.05.2017
12:20:45
а можно из f# юзать c# либы?

The mirror
04.05.2017
12:20:55
Не знаю, читайте доки

Google
Arseniy
04.05.2017
12:23:13
Nikolay
04.05.2017
12:23:27
можно
А блин

Я думал ты про Fable ?

Ilya
04.05.2017
12:23:53
не)

Arseniy
04.05.2017
12:24:06
я последние пару лет на F# вообще ничо работающего не написал

у меня очень странный сценарий его использования

я в нем проектирую)

ну то есть, я так и не осилил ни одной рисовалки всяких моделек, потому что это очень неудобно и долго. а на работе у нас сервисы и анемичная модель

на F# калякаешь рекорды с вариантами, пишешь ф-ции обработчики, собираешь комбинаторами. если все сошлось

можно один в один перегонять на C#, где ф-ция превращается в интерфейс и реализацию

вариант - енум + базовый класс

ну рекорды в обычный класс по сути

хотя оверрайдить эквалс и хешкод бесит

Google
Летучая
04.05.2017
12:30:51
С фибоначами

Перенос нужон

Arseniy
04.05.2017
12:33:07
Какой?
ну он во-первых использует Console.WriteLine и вообще является калькой с C#. то есть ничего не демонстрирует и не идиоматичный.



вот так это будет выглядеть в f#, но смысла в этом никакого

Летучая
04.05.2017
12:35:32
Ну там

Две функции же щас

Предложите в общем, что туда крутого положить -- положим)

Arseniy
04.05.2017
12:37:05
ну вот я щас смотрю скала, хаскель и прочие *.орги

Ilya
04.05.2017
12:37:43
литературу бы, если есть возможность

Roman
04.05.2017
12:38:27
меня на данный момент заинтересовала эта магия с дата-провайдерами
тайппровадеры работают с mono. в .net core пока не работают.

а можно из f# юзать c# либы?
Можно, даже VB либы. и наоборот

Ilya
04.05.2017
12:39:46
а он в полном фрэймвёрке работает?

Ilya
04.05.2017
12:39:59
а там есть тайп провайдеры?)

Roman
04.05.2017
12:42:05
@shwars тут или я не понял о чем ты

а там есть тайп провайдеры?)
в .net framework есть, в .net core пока нет

литературу бы, если есть возможность
Литературу, да. У нас есть репозиторий переводов.

Google
Arseniy
04.05.2017
12:43:08
Предложите в общем, что туда крутого положить -- положим)
ну смотри что выходит. хаскель - кусок кода уровня факториал, котлин калька с джавы, кложура без кода, скала без кода, окамл - сложный целостный фрагмент, свифт без кода, эрланг - лучше бы я этого не видел, эликсир - демонстрация профитов через фрагменты

Roman
04.05.2017
12:43:16
литературу бы, если есть возможность
https://github.com/fsharplang-ru/translations

переводы все еще в процессе. Но если интересно присоединяйся)

Arseniy
04.05.2017
12:44:36
условно мейнстрим - скала, кложа, свифт, никаких фрагментов. наверное потому что сидят на двух стульях, и боятся испугать любителей тока одного их них.

я не думаю, что F# относительно C#, тоже самое, что котлин относительно джавы. идея котлина - джава без боли. а у фишарпа не так.

лично на мой взгляд, самое главное в F# против C# текущей версии - это АТД и паттерн матчинг

можно это попробовать обыграть

Roman
04.05.2017
12:51:35
https://www.slideshare.net/mobile/ScottWlaschin/c-light

Arseniy
04.05.2017
12:51:55
я тоже сайт влошина листаю

Roman
04.05.2017
12:52:23
https://www.slideshare.net/mobile/ScottWlaschin/c-light
кстати может его тоже перевести и запихнуть на сайт?

Arseniy
04.05.2017
12:55:35
вот какая есть идея

Arseniy
04.05.2017
12:56:33
есть 100500 холиворов адептов ооп, кто от чего должен наследоваться - квадрат от прямоугольника или наоборот, как и круг от овала или наоборот

может показать что в F# такой вопрос просто не имеет смысла, потому что type Shape = Rectanglу | Square

или там type Shape = Oval | Circle и рядышком поместить ф-цию вычисления площади

и дальше сделать printfn значения

как по мне это не так сложно как (* Binary tree with leaves car­rying an integer. *) type tree = Leaf of int | Node of tree * tree let rec exists_leaf test tree = match tree with | Leaf v -> test v | Node (left, right) -> exists_leaf test left || exists_leaf test right let has_even_leaf tree = exists_leaf (fun n -> n mod 2 = 0) tree и не настолько убого как primes = filterPrime [2..] where filterPrime (p:xs) = p : filterPrime [x | x <- xs, x `mod` p /= 0]

про фигуры все должны знать из школы, а если человек видел эти ооп срачи, то сможет оценить)

ну что думаете?

Roman
04.05.2017
13:08:39
ну что думаете?
issue сюда https://github.com/fsharplang-ru/fsharplang-ru.github.io пожалуйста)

Google
Ilya
04.05.2017
13:16:24
в линк паде нет интелисенса для f#(

Arseniy
04.05.2017
13:20:13
type Shape = | Circle of radius : float | Elipse of radius1 : float * radius2 : float let shapeArea = function | Circle(r) -> Math.PI * r ** 2. | Elipse(r1, r2) -> Math.PI * r1 * r2 let elipse = Elipse(2., 1.) printfn "%A" (shapeArea elipse)

issue сюда https://github.com/fsharplang-ru/fsharplang-ru.github.io пожалуйста)
а смысол пихать в ишью дискуссионые вопросы, по которым у меня нету четкого мнения

Roman
04.05.2017
13:22:18
Да, я бы этим кодом заменил вкладку "Мощная система типов"

Admin
ERROR: S client not available

Roman
04.05.2017
13:24:53
Кто-нибудь знает хорошие видео на youtube про F# на русском?

Arseniy
04.05.2017
13:25:27
а почему не замесло привет мира? я тут тока с использованием function переборщил. а так-то все на месте

даже использование стдлиб через Math.PI показал. можно конечно, для большей надежности Console.WriteLine пихнуть, но чет мне не нравится

Roman
04.05.2017
13:26:48
привет мир если и заменять ,то на printfn "Пhивет мир"

Arseniy
04.05.2017
13:27:13
ну я уже выше написал. что это вообще ничо не значит

Roman
04.05.2017
13:28:05
да, т.е. его можно дополнить [<EntryPoint>] let main argv = printfn "%A" argv 0 //или просто printfn "Привет мир"

Ilya
04.05.2017
13:28:20
https://www.pluralsight.com/courses/fsharp-fundamentals

с таким названием хрен нагуглишь

https://www.pluralsight.com/search?q=F%23&clm_id=590b2c670cf5bd1000656ce1&CLM_Id__c=590b2c670cf5bd1000656ce1

Arseniy
04.05.2017
13:29:31
да, т.е. его можно дополнить [<EntryPoint>] let main argv = printfn "%A" argv 0 //или просто printfn "Привет мир"
я провел ёба-исследование. оно показало, что таким занимаются только языки, которые позиционируются как езык_Х_без_боли

а фишурп не позиционируется как C# без боли, а как другой язык

Roman
04.05.2017
13:30:28
Arseniy
04.05.2017
13:30:38
не

фшарп как сишарп без боли всегда вырождается в сишарп с очень большой болью

Google
Arseniy
04.05.2017
13:31:57
на F# просто очень неудобно программировать в неидиоматичном стиле. и это касается обоих крайностей

Roman
04.05.2017
13:32:14
да, такое возмонжно, но F# вполне можно позиционрировать как .net без боли.

Igor
04.05.2017
13:33:58
cool заголовок, еще и пуш пришел

Arseniy
04.05.2017
13:34:20
иммутабельность, атд, комбинаторы, и еще 2 монады - сек, асинк.

Friedrich
04.05.2017
13:35:19
А какой модификатор модулю добавить, чтобы был доступен только в Funogram и Funogram.* неймспейсах
Возможно, ты хотел internal, но оно будет внутри сборки, а не неймспейсов.

(простите за некропостинг, я ещё перечитываю логи :) )

Arseniy
04.05.2017
13:35:34
ну в таком стиле написано 90% стдлиб F# (если выбросить оптимизации), дидлы всякие.

type Shape = | Circle of radius : float | Elipse of radius1 : float * radius2 : float let shapeArea shape = match shape with | Circle(r) -> r ** 2. | Elipse(r1, r2) -> Math.PI * r1 * r2 let elipse = Elipse(2., 1.) printfn "%A" (shapeArea elipse)

вот такое. читается даже чуваком, который F# в глаза не видел

Friedrich
04.05.2017
13:40:56
ну он во-первых использует Console.WriteLine и вообще является калькой с C#. то есть ничего не демонстрирует и не идиоматичный.
А мы специально этот пример с интеропом и показали, чтоб было ясно, как делать вызов C#-методов. Ну, я так идею понял.

Можно, даже VB либы. и наоборот
А я вот как раз и делаю open Microsoft.VisualBasic.FileIO, например :) https://github.com/ForNeVeR/Vacuum/blob/b716d1270ac082575ca36c0f08e8506498309f2b/Vacuum/Program.fs#L7

Nikolay
04.05.2017
13:43:49
Атрибутом фиксится)

Arseniy
04.05.2017
13:44:32
А мы специально этот пример с интеропом и показали, чтоб было ясно, как делать вызов C#-методов. Ну, я так идею понял.
да я понел. просто пример с интеропом превратился в кальку, да еще и с земляным фрагментом [<EntryPoint>], который мало того, что выглядит не ОК, так еще и в сишурперы не знают такой атрибут

Friedrich
04.05.2017
13:45:13
Да, твоя аргументация имеет смысл.

Arseniy
04.05.2017
13:45:50
вот, добил пример до полной ясности про интероп type Shape = | Circle of radius : float | Elipse of radius1 : float * radius2 : float let shapeArea shape = match shape with | Circle(r) -> System.Math.PI * r ** 2. | Elipse(r1, r2) -> System.Math.PI * r1 * r2 let elipse = Elipse(2., 1.) printfn "%A" (shapeArea elipse)

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