
Ayrat
08.10.2018
18:25:13
забыл забыл

Grigoriy
08.10.2018
18:25:22

Ayrat
08.10.2018
18:25:49
Ну один хер, билд скрипт для баша тоже чужеродно в виндовс окружении будет смотреться

Anton
08.10.2018
18:26:07

Google

Anton
08.10.2018
18:26:13
на венде
)

Grigoriy
08.10.2018
18:26:25
через Cygwin

Anatoly
08.10.2018
18:26:55
mingw лучше

Ayrat
08.10.2018
18:27:04
через Cygwin
таких бы умельцев я бы тоже послал PowerShell изучать!

Anatoly
08.10.2018
18:27:05
всё равно с git bash ставится, на винду.

Grigoriy
08.10.2018
18:27:36

Anton
08.10.2018
18:27:38
хз зачем костылять баш, если есть дотнет с fsi
В общем, моя маленькая инициатива под шумок пропихнуть в компанию F# провалилась с треском. Буду искать другой повод хД

Ayrat
08.10.2018
18:29:27
хз зачем костылять баш, если есть дотнет с fsi
Вопрос в том кто будет поддерживать билд скрипты
если репка на F# и билд скрипт на F#, то условному мейнтейнеру не придётся изучать brainfuck/PS/cmd/bash/яхзчтоещё
Ему нужен будет только F# - это лучший кейс для Fake и иже с ними
А вот если ты билд скрипт на F# просто ради F# делаешь чтобы потом втюхать его еникейщикам на сапорте - то это плохой план

Grigoriy
08.10.2018
18:29:50

Владислав
08.10.2018
18:30:38

Google

Grigoriy
08.10.2018
18:30:51

Ayrat
08.10.2018
18:31:25
ну так-то fake без dotnet tools тоже через cmd/bash скрипт запускать надо)

Anton
08.10.2018
18:31:29

Grigoriy
08.10.2018
18:32:03
в FAKE есть бутстрап .cmd

Anatoly
08.10.2018
18:47:32
(извинити)
https://i.redd.it/k8l9vp5wozq11.jpg

Vasily
08.10.2018
19:25:16

Grigoriy
09.10.2018
02:06:39
Привет!

Roman
09.10.2018
07:09:56
let inline score p l =
let divider = ((pown (p-l) 2) + 1) |> float32
(p*l)/sqrt divider
let s = score 1 2 //error
let s1 = score 1 2.0f //error
Дает ошибку
The type 'float32' does not match the type 'int32'
Внимание вопрос: валера, какого хера?

Григорий
09.10.2018
07:19:44
перегрузок функций же в F# нету,

Evgeniy
09.10.2018
07:23:10

Roman
09.10.2018
07:24:04
функция компилится, а вызвать никак

Evgeniy
09.10.2018
07:24:18
Компилируется, потому что она обобщенная по арифметическим операторам. Но нужных тебе операторов (чтобы умножать или делить int на float) просто нет.

Roman
09.10.2018
07:28:04
хм, типа все надо привести к флоату?

Evgeniy
09.10.2018
07:28:15
Да.
В F# вся арифметика строгая.
Нужно явно конвертировать значения.

Roman
09.10.2018
07:28:57
ок спс

Andrew
09.10.2018
07:29:11

Google

Ayrat
09.10.2018
07:30:02
кстати, а почему?
чтобы нельзя было имплиситно привести флоаты к интам или обратно и сделать херню

Andrew
09.10.2018
07:30:29

Ayrat
09.10.2018
07:31:34
ну это из той же серии про боксинг. в F# надо ЯВНО упаковывать стракты там где требуется обжект или где компилятор думает что может прилететь любой тип, а ты матчишь с референсом, он потребует явный боксинг от тебя

Andrew
09.10.2018
07:31:37
видимо дело в том, что типы выводятся автоматически и такое поведение может иметь неожиданные последствия

Roman
09.10.2018
07:31:37
let inline score p l =
let p = float p
let l = float l
let divider = ((pown (p-l) 2) + 1.0)
(p*l)/sqrt divider
вызывается успешно с любыми числовыми типами)

Ayrat
09.10.2018
07:33:20
матан говорит что действительные числа надмножество целых, но матан не в курсе что действительные числа тяжело отображать корректно без потери точности в компах

Andrew
09.10.2018
07:35:08

Ayrat
09.10.2018
07:35:36
а вот например
let sum a b = a + b должен выводится флоат, да
т.к. он более общий. В фшарпе выводится инт

Roman
09.10.2018
07:36:38
или decimal?

Ayrat
09.10.2018
07:37:00
да хз, это уже мелочи жизни) хорошо что для чисел нет сабтайпинга!!
вот была бы хохма

Andrew
09.10.2018
07:37:19

Ayrat
09.10.2018
07:37:32

Anna
09.10.2018
07:37:34

Roman
09.10.2018
07:37:45

Ayrat
09.10.2018
07:38:08

Google

Ayrat
09.10.2018
07:38:21
ну типа складывай что хочешь где определён (+), компилятор по месту разберётся

Anna
09.10.2018
07:38:37

Ayrat
09.10.2018
07:38:45

Andrew
09.10.2018
07:38:47
я про то, что для человека без предварительного знания выбор int для данного случая настолько же неожиданный, насколько был бы float

Anna
09.10.2018
07:39:02

Roman
09.10.2018
07:39:19
я вот тоже сижу и думаю, но все равно что-то не сходится

Evgeniy
09.10.2018
07:39:27

Bonart
09.10.2018
07:39:49

Anna
09.10.2018
07:40:05
Но всё равно мне кажется опасно вводить отношение подтипизации для целых и дробных. Надо общий тип над теми и другими

Andrew
09.10.2018
07:40:16
я бы ожидал от такой конструкции что-то типа T sum<T>(T a, Tb) => a + b

Anna
09.10.2018
07:40:20
там какой-нить Number обычно делают

Evgeniy
09.10.2018
07:40:38

Bonart
09.10.2018
07:40:47

Evgeniy
09.10.2018
07:41:01

Ayrat
09.10.2018
07:41:08

Bonart
09.10.2018
07:41:51

Anton
09.10.2018
07:42:49
с чего это вдруг?

Evgeniy
09.10.2018
07:43:04

Andrew
09.10.2018
07:44:06

Google

Evgeniy
09.10.2018
08:08:53

Anton
09.10.2018
08:10:00

Roman
09.10.2018
08:28:22

Andrew
09.10.2018
08:29:27

Pavel
09.10.2018
08:36:03

Andrew
09.10.2018
08:54:54
Хотя запрещать ради него все числовые преобразования мне все равно кажется непрактичным

Anton
09.10.2018
08:55:42

Pavel
09.10.2018
09:41:43

Anton
09.10.2018
09:41:52
меньше букв

Andrew
09.10.2018
09:52:01
красивее жи
Имхо опускать нулевую часть дробного числа с любой стороны от точки абсолютно нечитаемо

Александр
09.10.2018
12:05:51
Формулы никогда нечитаемы
И тем лучше, чем меньше места они занимают

Paul
09.10.2018
12:11:00
Всем привет! Скажите пожалуйста: почему элементы в массиве mutable, а в списке нет?

Siarhei
09.10.2018
12:13:17