
Roman
26.09.2018
20:53:55
let shift = 3
[|1;2;3|] |> Array.map ( fun x -> x +n)

Andrew
26.09.2018
20:54:03
Ну это да
Просто надо предусмотреть выход за границы
+ шифт в две стороны должен красиво работать (с отрицательным N)

Google

Vasily
26.09.2018
20:58:22
Задача какая?

Andrew
26.09.2018
21:01:24
Сдвинуть массив циклически, тоесть
0 1 2 3
При N = 1 превратить в
3 0 1 2
А при N = -2 в
2 3 0 1

Ivan
26.09.2018
21:03:19
Похоже циклический буффер на массиве. Изящно нельзя, можно грубо на unmanaged или IL. Будет быстро. Но ведь проще написать свою реализацию индексера с опорой на массив.

Andrew
26.09.2018
21:03:49
Это лаба в универ, тут важна не скорость, главное быстренько реализовать DES и пояснить что вообще происходит
Оптимизировать у меня задачи нет
Если б я хотел быстрее, я б пытался сделать на Си и жестко следил за памятью

Ivan
26.09.2018
21:04:50
Если выглядит как массив и интервейс как у массива - это массив?

Andrew
26.09.2018
21:05:22
Да
Т.к. в моем случае amount не будет больше 2
А массив четко будет 32 элемента

Ivan
26.09.2018
21:08:35
А вернуть IList не вариант?
Меня копирование напрягает

Google

Roman
26.09.2018
21:09:17
А почему бы Array.Copy не использовать?
Иногда процедурка лучше чем ФП)

Andrew
26.09.2018
21:09:39
А если так?

Ivan
26.09.2018
21:12:19
Да массивы это болезнь дотнет (не только его). Реализацию IFixedVector превратили в единственную ыозможность.

Pavel
27.09.2018
03:18:24
Ну там просто все на массивах
let shift (xs:_[]) n =
let n = if n >= 0 then n % xs.Length else xs.Length + n % xs.Length
Array.concat [xs.[xs.Length - n..]; xs.[..xs.Length - n - 1]]

Klei
27.09.2018
05:24:30

Friedrich
27.09.2018
06:18:41
В типах получится то же самое, а кэширование статических структур ты добавишь.

Andrew
27.09.2018
06:22:20
Спасибо)

Никос
27.09.2018
10:35:41
Это после статьи на хабре такое поток народа?)

Roman
27.09.2018
10:44:13
Ага

Bogdan
27.09.2018
13:40:22

Mikhael
27.09.2018
13:45:22
https://habr.com/post/424461/
вот эта полагаю

Bogdan
27.09.2018
17:59:13
возник вопрос, нашел пример класса:
type MyClass =
class
new : intParam:int * strParam:string -> MyClass
member Square : x:int -> int
member Two : int
end
но VsCode ругается. Это проблема с VsCode ?

Klei
27.09.2018
18:01:05

Google

Bogdan
27.09.2018
18:02:02

Kinrany
27.09.2018
20:35:13
Есть хорошая причина, по которой много разных конструкций в F# используют кейворд type, а не отдельные слова?

Roman
27.09.2018
20:36:05

Kinrany
27.09.2018
20:36:12
Классы?

Roman
27.09.2018
20:36:55
Обычно кейворд type обозначает работу с типами)
Создание и алиас. Вроде все

Kinrany
27.09.2018
20:39:26
Хотел сказать, что тогда по аналогии всё, что попадает в рантайм, тоже надо было бы объявлять с помощью одного и того же слова

Roman
27.09.2018
20:39:40

Kinrany
27.09.2018
20:39:40
Но let именно это и делает, да?

Roman
27.09.2018
20:40:04
let это биндинг. Это наполнение. А type описывает структуру.

Kinrany
27.09.2018
20:40:10
И переменные, и функции, как минимум?

Roman
27.09.2018
20:40:22
Вопрос конечно интересный)
Ф-ции биндятся. На за регистрацию была от сообщества статья как раз. Ща скину. Про let

Kinrany
27.09.2018
20:42:11
Спасибо :)

Roman
27.09.2018
20:42:49
Явно описывает зачем нужен let) оно про рантайм, тут ты, скорее всего прав. А вот type это наверное больше про compile time

Anna
27.09.2018
20:42:56
В ML кстати разные слова. let для значений, fun для функций

Evgeniy
27.09.2018
20:43:26

Roman
27.09.2018
20:43:33

Google

Anna
27.09.2018
20:44:27

Kinrany
27.09.2018
20:57:55
Ох черт, автор статьи у меня пары вёл

Evgeniy
27.09.2018
20:58:51

Kinrany
27.09.2018
20:59:15
Действительно
Разница между let и type напомнила эзотерический Spiral: там автор хочет, чтобы типы были значениями, а ключевые слова использовать для различий между compile-time и run-time вычислениями

Evgeniy
28.09.2018
04:23:57
https://twitter.com/jorgefioranelli/status/1045451043096522752
Привет.

Klei
28.09.2018
10:57:00
Странно кстати, 20 человек за пару дней набежало и почти не приветствовали.

Roman
28.09.2018
11:02:16

Evgeniy
28.09.2018
11:29:14

Johann
28.09.2018
12:01:45
Ok, всем ?

Artem
28.09.2018
12:26:21
Привет всем)))

Evgeniy
28.09.2018
15:24:45
Пожалуйте.

Andrey
28.09.2018
15:34:09
Спасибо. Извините был без приветствия. Всем привет)

Vlad
28.09.2018
16:40:11
https://github.com/fsharp/fslang-suggestions/issues/698