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

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

Nikolay
04.05.2017
12:22:37

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

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

Roman
04.05.2017
12:39:52

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

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

Google

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

Roman
04.05.2017
12:43:16
переводы все еще в процессе. Но если интересно присоединяйся)

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

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 carrying 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)

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
а фишурп не позиционируется как 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
(простите за некропостинг, я ещё перечитываю логи :) )

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
Можно, даже 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

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)