?

Log in

No account? Create an account
Читая обсуждение http://ivan-gandhi.livejournal.com/3329246.html и… - Cyril Pertsev — LiveJournal
September 13th, 2015
02:21 pm

[Link]

Previous Entry Share Next Entry

(91 comments | Leave a comment)

Comments
 
[User Picture]
From:rblaze
Date:September 14th, 2015 03:25 am (UTC)
(Link)
Очень нужный кусок из функциональных языков, который есть даже не во всех функциональных языках, это чистые функции. Второй кусок - нормальная система типов, а не как в C++ и Java.
[User Picture]
From:soonts
Date:September 14th, 2015 03:55 am (UTC)
(Link)
>кусок из функциональных языков, который есть даже не во всех функциональных языках, это чистые функции
Это дизайн-решение можно использовать вообще во всех языках, где есть функции или методы.
Compile-time validation сейчас несложно допилить для .NET, потому что Roslyn.
[User Picture]
From:rblaze
Date:September 14th, 2015 04:17 am (UTC)
(Link)
"Посмотрите, как то, что в Хаскеле достигается с помощью монад, в <language name> достигается с помощью внимательности и усидчивости".

Чистые фунции это не дизайн-решение, это когда я уверен, что стажер, допиливающий что-то там в потрохах библиотеки, при попытке облажаться получит от компилятора линейкой по рукам. И я хотел бы посмотреть на работоспособные compile-time проверки хотя бы для F#, с учетом того, что он до макушки набит нечистым.
[User Picture]
From:soonts
Date:September 14th, 2015 05:18 am (UTC)
(Link)
>стажер.. при попытке облажаться получит от компилятора линейкой по рукам
Side effects от функций это всего один класс проблем, с которыми можно облажаться. Стажер значит ещё где-то это сделает.

>с учетом того, что он до макушки набит нечистым
Внутри у Microsoft-а всё допиленно ещё с .NET 3.5 и видимо используется для сборки .NET framework.
Поэтому весь фреймворк заботливо размечен специальным образом, конечно эти метаданные доступны и компайл-тайм тоже.
[User Picture]
From:rblaze
Date:September 14th, 2015 05:37 am (UTC)
(Link)
Да, это целый класс проблем, и я хочу от него избавиться. One class at a time, так сказать. А про аттрибут смешно. Я, конечно, рад, что фреймворк размечен, хотя за пять минут так и не нашел способа посмотреть на это из студии, но я даже примерно не представляю как скрестить эту разметку и ее валидацию с linq, например. Он же внутри себя очень бодренько использует mutable state, хотя наружу этого и не показывает.
[User Picture]
From:109
Date:September 14th, 2015 07:43 am (UTC)
(Link)
а какая разница, что внутри? чистая функция - это контракт, должна быть чистой при взгляде снаружи, и только.

и эта разметка отлично скрещена с linq, и даёт ворнинги при компиляции, если что не так.
[User Picture]
From:rblaze
Date:September 14th, 2015 07:51 am (UTC)
(Link)
Это очень важно, что внутри, потому что то и дело оказывается, что надо написать точно такое же, но с перламутровыми пуговицами. И в этот момент, если внутри некромантия и жевательная резинка, жизнь становится очень грустной.
[User Picture]
From:kika
Date:September 14th, 2015 05:12 am (UTC)
(Link)
Ну сделайте мне чистые функции на С, например. Так чтобы компилятор проверял, а не Вася, делающий код-ревью.
[User Picture]
From:soonts
Date:September 14th, 2015 05:20 am (UTC)
(Link)
Для unsafe code практически нереально.
Несложно допилить для .NET.
My Website Powered by LiveJournal.com