|
Пора на C++?
370 / 264 / 99
Регистрация: 10.04.2020
Сообщений: 1,275
|
|
Зачем нужен F#?06.08.2020, 16:30. Показов 48989. Ответов 131
Метки нет (Все метки)
Вы не подумайте, что я злодей. Просто зачем нужен F#, если есть C# или хотя-бы VB.NET, в которых возможностей больше?
0
|
|
| 06.08.2020, 16:30 | |
|
Ответы с готовыми решениями:
131
Зачем нужен LINQ? |
|
|
|||||||
| 19.08.2020, 08:23 | |||||||
|
Ну и кроме того... Я так понимаю репл - это та самая консоль F# Interactive? Тот самый инструмент ради быстрой работы которого "испортили" весь язык? Туда обычно вводят относительно небольшие куски кода, ну где-то в пределах 1 кб. Отсюда естественно вопрос: а сколько времени можно сэкономить на компиляции такого куска за счет одного прохода? Я могу допустить, что в каких-то древних языках это могло иметь значение, но F# - достаточно молодой язык и когда он создавался, по-моему, уже даже для бюджетных компьютеров это было бы "экономией на спичках". Я все-таки еще раз рекомендовал бы прочитать fslang-design/FS-1009-mutually-referential-types-and-modules-single-scope.md at master · fsharp/fslang-design · GitHub Там есть много интересных моментов, проливающих свет на обсуждаемую тему. То есть там обсуждается вопрос о введении возможности сделать все взаимно видимым, но при этом описывается ряд аргументов против этого. В частности в качестве аргумента приводится и такой, что если такую опцию ввести, то новички будут ей злоупотреблять, что не есть хорошо. )) Есть там правда и частичное подтверждение предположения Curry насчет производительности, но немного все-таки не совсем то, процитирую полностью
0
|
|||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||||||
| 19.08.2020, 13:18 | |||||||
|
(В принципе можно. Сначала пишите "Func<int,int> f1 = null;", затем используете её в f2, затем задаёте для f1 новое значение.) По сути LINQ - это специальный синтаксис для монад. А (|>) - это обычный оператор: (|>) x f = f x. Ближайший аналог в c# - это классы расширения, благодаря которым есть возможность выстроить вызовы функций в цепочки: y = x.f1().f2().
0
|
|||||||
|
Модератор
|
|||||
| 19.08.2020, 14:24 | |||||
|
А в остальном .NET https://docs.microsoft.com/ru-... at-ext-3.1 Применять то можно, но то что они разные - это недостаток F#.
0
|
|||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
|||
| 19.08.2020, 15:05 | |||
|
"Встроенные типы" - это в какой-то мере условность. После подключения библиотеки с реализацией некого типа он практически не отличается от встроенных. Отличия могут быть для коллекций, для которых в языке есть специальный синтаксис Comprehensions. з.ы Если в C# использование "типов F#" вызывает какие-то сложности, то это недостаток C#, не так ли?
0
|
|||
|
1524 / 914 / 329
Регистрация: 17.05.2015
Сообщений: 3,438
|
|||
| 19.08.2020, 17:24 | |||
0
|
|||
|
Модератор
|
|||
| 19.08.2020, 18:12 | |||
|
В Python .net, вроде бы, те же System.Collections.Generic что и в C#.
0
|
|||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||||||||||||
| 19.08.2020, 20:35 | |||||||||||||
Добавлено через 10 минут https://en.wikipedia.org/wiki/Multi-pass_compiler https://fsharp.github.io/2015/... ler-phases и попробовать доказать что f# однопроходный. Добавлено через 5 минут Добавлено через 1 минуту
0
|
|||||||||||||
|
Модератор
|
||||
| 19.08.2020, 20:58 | ||||
|
А преимущество то какое? Экономия имён? Сомнительное преимущество. Вы же это признаёте. Остаётся только признать что это недостаток. Насчёт LINQ я не SQL-евский синтаксис имел ввиду, а код из цепочки функций. Видимо, уже осеннее обострение начинается. Я ж под .NET не пишу.
0
|
||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
||||||||||||||||||||||||||
| 19.08.2020, 21:18 | ||||||||||||||||||||||||||
Добавлено через 4 минуты при чем тут (|>) ? его в с# не существует ни в каком виде
0
|
||||||||||||||||||||||||||
|
Модератор
|
||||||||||
| 19.08.2020, 22:27 | ||||||||||
|
Почему вообще отдельные типы контейнеров, и списков в частности, ассоциировать с разными языками?
0
|
||||||||||
|
Модератор
3140 / 2288 / 469
Регистрация: 26.03.2015
Сообщений: 8,898
|
||
| 20.08.2020, 00:36 | ||
|
Если под LINQ подразумевать не набор методов расширения к IEnumerable/IQueryable, а синтаксис типа "from x in myCollection". Используя этот синтаксис, можно лаконично (без использования вложенных лямд) переписать функциональный "монадный" код на C#.
0
|
||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
||
| 20.08.2020, 01:06 | ||
|
– во-первых, на момент создания более нового языка стандартная библиотека основного языка уже существует, никто не будет её полностью переписывать под новый язык — это куча времени и сил, поэтому обеспечение возможности использовать существующую библиотеку — стандартная практика. Кроме того это позволяет проектам, уже имеющим кодовую базу на основном языке, добавлять код на новом по мере необходимости / по желанию, а не переписывать весь проект полностью. Например Scala/Clojure/Kotlin/Groovy предоставляют доступ к JDK. – во-вторых, никто не будет добавлять в стандартную библиотеку основного языка библиотеки всех новосозданных языков, это совершенно бессмысленно. Например в JDK нет библиотек Scala/Clojure/Kotlin/Groovy. – и в-третьих, для разных вычислительных моделей (императивная/функциональная) подходят разные структуры данных. Например сравни JDK ArrayList (или базовые Java-массивы) с массивами Scala. Первые плохо подходят для иммутабельных операций (создание копии с одним изменённым элементом), последними в Java никто пользоваться не будет. То же самое справедливо и для .NET, и (по крайне мере в некоторой степени) для C/C++, и для Pascal/Delphi.
0
|
||
|
Модератор
|
|||||
| 20.08.2020, 12:07 | |||||
|
В идеале, языки .NET должны отличаться только синтаксисом. Подчёркиваю - .NET, с централизованной разработкой. С платформой java, ситуация иная. А С++ почти надмножество над С (исключены только немного устарелых моментов и слегка более строго типизирован), по возможностям на порядки выше. Для Pascal/Delphi тоже.
0
|
|||||
|
1195 / 588 / 88
Регистрация: 20.09.2012
Сообщений: 1,881
|
|||||||
| 20.08.2020, 19:21 | |||||||
Добавлено через 2 минуты Добавлено через 2 минуты
Добавлено через 40 секунд
0
|
|||||||
|
Модератор
|
||||||||||||||
| 20.08.2020, 20:17 | ||||||||||||||
0
|
||||||||||||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||||||||
| 20.08.2020, 22:25 | |||||||||
Добавлено через 19 минут
0
|
|||||||||
|
Модератор
|
|||||
| 20.08.2020, 22:42 | |||||
|
Другое дело что Retrieving the value of this property is an O(1) operation; setting the property is also an O(1) operation. С момента появления C# в него ввели так много функционального, что теперь главное отличие между ними в том что F# строго типизирован, а C# нет.
0
|
|||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||||||
| 20.08.2020, 22:46 | |||||||
|
0
|
|||||||
|
Модератор
|
|||||
| 20.08.2020, 23:10 | |||||
|
Но некоторым вынь да положь именно визуалбейсиковский синтаксис, или ещё какой.
0
|
|||||
|
4576 / 2775 / 491
Регистрация: 28.04.2012
Сообщений: 8,782
|
|||||
| 20.08.2020, 23:32 | |||||
![]()
0
|
|||||
| 20.08.2020, 23:32 | |
|
Зачем он нужен. ExecuteScalar(); Зачем нужен CancellationToken?
Зачем нужен модификатор out Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Знаете, от чего появляется стресс?
kumehtar 15.07.2026
Стресс появляется оттого, что вы, зная как поступить правильно, делаете наоборот.
Ларри Уингет
|
Нас бьют, а мы крепчаем? Какая чушь!
kumehtar 15.07.2026
Вот это вот бытующее мнение, что человек меняется только под действием проблем, всегда считал вредоносным. Поверь, от проблем у людей появляются не изменения, а нервное расстройство и ПТСР. А. . .
|
сукцессия 29. Переход от одних деревьев на другие делать более или менее вероятностным?
anaschu 12.07.2026
Насколько смена типов микоризы — исключительное событие в двухвековой сукцессии? Оценка вероятности в пространстве параметров
В текущей версии модели успешно реализован ключевой механизм. . .
|
сукцессия 27. Думаю, как переделывать уже написанную статью с планами на сукцессию.
anaschu 12.07.2026
Анализ соответствия модели требованиям
Реализованные компоненты:
Механизм закисления почвы через протонную помпу
Конкуренция между типами микориз
pH как триггер сукцессии
C/ P соотношение. . .
|
|
Сукцессия 26. Мат модель создана.
anaschu 12.07.2026
Модель смены растительных сукцессий посредством управления грибами работает внутри небольшой ячейки почвы, восстанавливающейся после пожара, где ненадолго бывшее царство хвойных снова захватили. . .
|
Решил проблему с ошибкой пагинации сообщений с сервера на алгоритме обхода дерева "Эстафета хвоста".
Hrethgir 12.07.2026
Проблема была в том, что удалялась именно новая кнопка, а не старая. Ни один ИИ не обнаружил это, а сам я смог только когда с работой стало попроще и когда заставил работать будущее автономное. . .
|
сукцессия 25. Хронология ошибок
anaschu 12.07.2026
# От 50-тонного гриба до устойчивого леса: хроника ошибок при построении модели вековой сукцессии микоризы
## О чём эта статья
В процессе построения ОДУ-модели (система дифференциальных. . .
|
сукцессия 24. Промежуточное общее описание модели
anaschu 12.07.2026
Хендофф: модель АМ→ЭКМ сукцессии микоризы (ризосфера, 50 лет)
Содержание проекта
Симуляция вековой (50 лет) экологической сукцессии в почве леса
Основные участники: АМ-гриб, ЭКМ-гриб,. . .
|