<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3847019</guid>
        <pubDate>Fri, 30 Apr 2021 11:28:55 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3847019</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '>Так не нужно. Вот если бы можно было так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">auto z = []{ return y() + 2; };</div><div class="code_line">auto y = []{ return x() + 1; };</div><div class="code_line">auto x = []{ return 3; };</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script>то было бы нунифигасебе.</div></div><br>
Следующий наводящий вопрос. А так?<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">std::function&#60;int()&#62; x, y, z;</div><div class="code_line">&nbsp;</div><div class="code_line">z = []{ return y() + 2; };</div><div class="code_line">y = []{ return x() + 1; };</div><div class="code_line">x = []{ return 3; };</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-30T14:31:15+03:00">30.04.21, 11:31</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846977'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>scrambrella &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:16+00:00">29.04.21, 19:46</time></span><div class='quote '>На С/С++ легко писать функционально.</div></div>Не очень легко. Но в целом запросто. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-30T11:35:50+00:00">30.04.21, 11:35</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846984'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:44:21+00:00">29.04.21, 20:44</time></span><div class='quote '>Давай теперь программу, которая фигачит инструкции в рандомном порядке.</div></div><a class='tag-url' href='https://www.dangermouse.net/esoteric/whenever.html' target='_blank'>Пффф. Даже язык такой есть.</a> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-30T11:41:01+00:00">30.04.21, 11:41</time></span></span><br>
Нет, <strong class='tag-b'>OpenGL</strong>. Они пытаются определить чёткие грани между двумя парадигмами, не понимая, что их нет.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3847015</guid>
        <pubDate>Fri, 30 Apr 2021 09:25:53 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3847015</link>
        <description><![CDATA[OpenGL: Я правильно понимаю, что ваш спор сводится к тому, считать ли набор локальных переменных у функции состоянием, или нет? Если это состояние, то в определении ИП по <strong class='tag-b'>applegame</strong> состояние никуда не девается, просто оно автоматически следует из <br>
последовательности инструкций, и, следовательно, не обязательно в явном виде подчёркивать его наличие. А если это не состояние, то тогда тем более нет никаких проблем с его определением.]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3847014</guid>
        <pubDate>Fri, 30 Apr 2021 09:07:59 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3847014</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846997'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-30T04:21:58+00:00">30.04.21, 04:21</time></span><div class='quote '>Хуже. Твое тоже оказалось несостоятельным. Так что и себя поздравь. И D_KEY-я не забудь. Да вообще всех поздравь, ничьё определение не оказалось состоятельным. Программирования не существует, особенно если инструкции закомментировать.  ПА-БЕ-ДААА&#33;</div></div><br>
:facepalm:]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846997</guid>
        <pubDate>Fri, 30 Apr 2021 04:21:58 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846997</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846994'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T22:33:37+00:00">29.04.21, 22:33</time></span><div class='quote '>Т.е. твоё «определение», что ИП — это порядок инструкций и ничего более, оказалось несостоятельным. Поздравляю.</div></div>Хуже. Твое тоже оказалось несостоятельным. Так что и себя поздравь. И D_KEY-я не забудь. Да вообще всех поздравь, ничьё определение не оказалось состоятельным. Программирования не существует, особенно если инструкции закомментировать. :D ПА-БЕ-ДААА&#33;]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846994</guid>
        <pubDate>Thu, 29 Apr 2021 22:33:37 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846994</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846992'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T21:48:56+00:00">29.04.21, 21:48</time></span><div class='quote '>Оказывается в императивных языках с побочными эффектами, от порядка инструкций тоже ничего не зависит.</div></div><br>
Т.е. твоё «определение», что ИП — это порядок инструкций и ничего более, оказалось несостоятельным. Поздравляю.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846992</guid>
        <pubDate>Thu, 29 Apr 2021 21:48:56 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846992</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846991'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T21:47:46+00:00">29.04.21, 21:47</time></span><div class='quote '>Молодец. И нахрена ты три страницы утверждал обратное? </div></div>Да вот, теперь сам удивляюсь. :lool: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T22:00:30+00:00">29.04.21, 22:00</time></span></span><br>
Тут еще удивительное открытие.<br>
Оказывается в императивных языках с побочными эффектами, от порядка инструкций тоже ничего не зависит. Как так?&#33;  :blink: <br>
<br>
<a class='tag-url' href='https://glot.io/snippets/fy5bbbksrd' target='_blank'>https://glot.io/snippets/fy5bbbksrd</a><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import std.stdio;</div><div class="code_line">&nbsp;</div><div class="code_line">alias myMain = x =&#62; writeln(&quot;VICTORY!!!&quot;);</div><div class="code_line">&nbsp;</div><div class="code_line">void main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;myMain({</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;writeln(&quot;first&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;writeln(&quot;second&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;writeln(&quot;third&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp;});</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846991</guid>
        <pubDate>Thu, 29 Apr 2021 21:47:46 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846991</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846990'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T21:43:14+00:00">29.04.21, 21:43</time></span><div class='quote '>Вообще никакой корреляции между порядком и вообще инструкциями и результатом</div></div><br>
Молодец. И нахрена ты три страницы утверждал обратное? :facepalm: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T21:48:39+00:00">29.04.21, 21:48</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846990'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T21:43:14+00:00">29.04.21, 21:43</time></span><div class='quote '>Нет, я же за Палестину.</div></div><br>
Тоже неплохой вариант. Даже лучше.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846990</guid>
        <pubDate>Thu, 29 Apr 2021 21:43:14 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846990</link>
        <description><![CDATA[applegame: Вот сам написал:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">myMain x = print &quot;VICTORY!&quot;</div><div class="code_line">&nbsp;</div><div class="code_line">main = myMain $ do</div><div class="code_line">&nbsp;&nbsp;print &quot;first&quot;</div><div class="code_line">&nbsp;&nbsp;print &quot;second&quot;</div><div class="code_line">&nbsp;&nbsp;print &quot;third&quot;</div></ol></div></div></div></div>Вообще никакой корреляции между порядком и вообще инструкциями и результатом. И намного проще. Учись у мастера, пока он жив.  :lol: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T21:44:24+00:00">29.04.21, 21:44</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846989'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T21:43:04+00:00">29.04.21, 21:43</time></span><div class='quote '>applegame, ясно-понятно, ты таки достиг уровня Серёжи. Не планируешь в Израиль переехать?</div></div>Нет, я же за Палестину. :)]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846989</guid>
        <pubDate>Thu, 29 Apr 2021 21:43:04 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846989</link>
        <description><![CDATA[korvin: <strong class='tag-b'>applegame</strong>, ясно-понятно, ты таки достиг уровня Серёжи. Не планируешь в Израиль переехать?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846988</guid>
        <pubDate>Thu, 29 Apr 2021 21:33:25 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846988</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846987'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T21:22:35+00:00">29.04.21, 21:22</time></span><div class='quote '> какой же ты, всё-таки, тупой.</div></div>Лентяй.  second-то все время посередине. Все ещё зависит от порядка инструкций. :lol: <br>
Ты просто выкинь вообще результат do-нотации, и напечатай что попало. Вот это будет супер-доказательство твоей правоты: вообще ничего не будет коррелировать. :lol: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T21:34:22+00:00">29.04.21, 21:34</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846987'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T21:22:35+00:00">29.04.21, 21:22</time></span><div class='quote '>Это доказывает, что ты<br>
1) не читаешь, что тебе пишут<br>
2) не пытаешься понять, что тебе пишут<br>
3) не разбираешься в том, о чём пишешь<br>
4) продолжаешь с завидным упорством игнорировать факты</div></div>Этот корвин порвался, несите другого. :D]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846987</guid>
        <pubDate>Thu, 29 Apr 2021 21:22:35 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846987</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846984'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:44:21+00:00">29.04.21, 20:44</time></span><div class='quote '>И, ой&#33; Как такое могло случиться? Результат тоже поменялся:<br>
Чудеса, монада не поменялась, а порядок поменялся.</div></div><br>
:facepalm: какой же ты, всё-таки, тупой.<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import Control.Applicative</div><div class="code_line">import Data.Time.Clock.POSIX (getPOSIXTime)</div><div class="code_line">&nbsp;</div><div class="code_line">data MyCoolIO a = MCIO (IO a)</div><div class="code_line">&nbsp;</div><div class="code_line">instance Functor MyCoolIO where</div><div class="code_line">&nbsp;&nbsp;fmap f (MCIO xIO) &nbsp;= &nbsp;MCIO $ fmap f xIO</div><div class="code_line">&nbsp;</div><div class="code_line">instance Applicative MyCoolIO where</div><div class="code_line">&nbsp;&nbsp;pure = MCIO . pure</div><div class="code_line">&nbsp;&nbsp;(MCIO fIO) &#60;*&#62; (MCIO xIO) &nbsp;= &nbsp;MCIO $ fIO &#60;*&#62; xIO</div><div class="code_line">&nbsp;</div><div class="code_line">instance Monad MyCoolIO where</div><div class="code_line">&nbsp;&nbsp;return = pure</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;(MCIO xIO) &#62;&#62;= f &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp;MCIO $ xIO &#62;&#62;= \x -&#62; (let (MCIO r) = f x in r)</div><div class="code_line">&nbsp;&nbsp;(MCIO xIO) &#62;&#62; (MCIO yIO) &nbsp;= &nbsp;MCIO $ do</div><div class="code_line">&nbsp;&nbsp; &nbsp;now &#60;- getPOSIXTime</div><div class="code_line">&nbsp;&nbsp; &nbsp;if even (round now) then xIO &#62;&#62; yIO</div><div class="code_line">&nbsp;&nbsp; &nbsp;else yIO &#62;&#62;= \y -&#62; (xIO &#62;&#62; return y)</div><div class="code_line">&nbsp;</div><div class="code_line">myPutStrLn :: String -&#62; MyCoolIO ()</div><div class="code_line">myPutStrLn s = MCIO $ putStrLn s</div><div class="code_line">&nbsp;</div><div class="code_line">myMain :: MyCoolIO () -&#62; IO ()</div><div class="code_line">myMain (MCIO io) = io</div><div class="code_line">&nbsp;</div><div class="code_line">main = myMain $ do</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;first&quot;</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;second&quot;</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;third&quot;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T21:23:35+00:00">29.04.21, 21:23</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846984'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:44:21+00:00">29.04.21, 20:44</time></span><div class='quote '>Опровергайте.</div></div><br>
Что опровергать? Ты даже не читаешь, что тебе пишут. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T21:26:50+00:00">29.04.21, 21:26</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846984'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:44:21+00:00">29.04.21, 20:44</time></span><div class='quote '>Правда хз, что это докажет.</div></div><br>
Это доказывает, что ты<br>
1) не читаешь, что тебе пишут<br>
2) не пытаешься понять, что тебе пишут<br>
3) не разбираешься в том, о чём пишешь<br>
4) продолжаешь с завидным упорством игнорировать факты]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846984</guid>
        <pubDate>Thu, 29 Apr 2021 20:44:21 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846984</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:35:16+00:00">29.04.21, 20:35</time></span><div class='quote '>Пример использования do-нотации с «чистыми» (не-IO) монадами.</div></div>А в этих примерах нет никакой возможности проверить в каком они выполняются порядке. Можно считать что в любом, в том числе и последовательно, пофиг.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:35:16+00:00">29.04.21, 20:35</time></span><div class='quote '>Давай, расскажи ещё про порядок в do-выражении.</div></div>А что тут рассказывать? Меняем первую и вторую строчку местами:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">main = myMain $ do</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;second&quot;</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;first&quot;</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;third&quot;</div></ol></div></div></div></div>И, ой&#33; Как такое могло случиться? Результат тоже поменялся:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">third</div><div class="code_line">first</div><div class="code_line">second</div></ol></div></div></div></div>Чудеса, монада не поменялась, а порядок поменялся.<br>
А ведь они ваще<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846982'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:35:16+00:00">29.04.21, 20:35</time></span><div class='quote '>Не коррелируют.</div></div> <br>
В общем зря ты мучался, выводил инструкции задом наперед.  :D Давай теперь программу, которая фигачит инструкции в рандомном порядке. Правда функция генерации СЧ сама будет с побочными эффектами. Придется еще сложнее мудрить код. :)<br>
Впрочем, подозреваю, что это таки возможно. Я даже в чистом императивном коде на D или Nim могу провернуть подобную фигню :D Правда хз, что это докажет. :)<br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T20:47:12+00:00">29.04.21, 20:47</time></span></span><br>
Ладно, плевать на монады, нотации, и прочую ересь. Надоело.<br>
<br>
Вот:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846980'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:03:44+00:00">29.04.21, 20:03</time></span><div class='quote '>Кстати в Erlang/Elixir нет мутабельных переменных, но полно функций с побочными эффектами. Значит таки можно писать императивно (по вашему определению) без мутабельных переменных?</div></div>Опровергайте.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846982</guid>
        <pubDate>Thu, 29 Apr 2021 20:35:16 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846982</link>
        <description><![CDATA[korvin: <strong class='tag-b'>applegame</strong>,<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">main = myMain $ do</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;first&quot;</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;second&quot;</div><div class="code_line">&nbsp;&nbsp;myPutStrLn &quot;third&quot;</div></ol></div></div></div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">third</div><div class="code_line">second</div><div class="code_line">first</div></ol></div></div></div></div><br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">impl</div><div class="body"><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import Control.Applicative</div><div class="code_line">&nbsp;</div><div class="code_line">data MyCoolIO a = MCIO (IO a)</div><div class="code_line">&nbsp;</div><div class="code_line">instance Functor MyCoolIO where</div><div class="code_line">&nbsp;&nbsp;fmap f (MCIO xIO) &nbsp;= &nbsp;MCIO $ fmap f xIO</div><div class="code_line">&nbsp;</div><div class="code_line">instance Applicative MyCoolIO where</div><div class="code_line">&nbsp;&nbsp;pure = MCIO . pure</div><div class="code_line">&nbsp;&nbsp;(MCIO fIO) &#60;*&#62; (MCIO xIO) &nbsp;= &nbsp;MCIO $ fIO &#60;*&#62; xIO</div><div class="code_line">&nbsp;</div><div class="code_line">instance Monad MyCoolIO where</div><div class="code_line">&nbsp;&nbsp;return = pure</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp;(MCIO xIO) &#62;&#62;= f &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;= &nbsp;MCIO $ xIO &#62;&#62;= \x -&#62; (let (MCIO r) = f x in r)</div><div class="code_line">&nbsp;&nbsp;(MCIO xIO) &#62;&#62; (MCIO yIO) &nbsp;= &nbsp;MCIO $ yIO &#62;&#62;= \y -&#62; (xIO &#62;&#62; return y)</div><div class="code_line">&nbsp;</div><div class="code_line">myPutStrLn :: String -&#62; MyCoolIO ()</div><div class="code_line">myPutStrLn s = MCIO $ putStrLn s</div><div class="code_line">&nbsp;</div><div class="code_line">myMain :: MyCoolIO () -&#62; IO ()</div><div class="code_line">myMain (MCIO io) = io</div></ol></div></div></div></div><br>
</div></div><br>
<br>
— <a class='tag-url' href='https://ideone.com/9nbY5V' target='_blank'>https://ideone.com/9nbY5V</a><br>
<br>
Давай, расскажи ещё про порядок в do-выражении. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T20:36:54+00:00">29.04.21, 20:36</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846980'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T20:03:44+00:00">29.04.21, 20:03</time></span><div class='quote '>Значит таки можно писать императивно (по вашему определению) без мутабельных переменных?</div></div><br>
В нашем определении есть изменяемое состояние, а не «мутабельные переменные». <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T20:38:24+00:00">29.04.21, 20:38</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>Последний - ИП, первые два ФП.</div></div><br>
Не угадал. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T20:42:53+00:00">29.04.21, 20:42</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>Откуда такой вывод? Почему все, если я говорил о хаскельном IO, в том числе и о монаде IO?</div></div><br>
Оттуда, что do-нотация работает с любой монадой, а не только монадой IO.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>Раз возможно IO, значит возможны функции с побочными эффектами.</div></div><br>
В Хаскелле нет функций с побочными эффектами.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>Потому что парадигма не может измениться если не меняется код  Очевидно же.</div></div><br>
Попробуй ещё раз поразмыслить над фразой «синтаксис &#33;= семантика».<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>Пример чего?</div></div><br>
Пример использования do-нотации с «чистыми» (не-IO) монадами.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>В чистой ФП-композиции порядок может быть любым, уже обсуждали и ты вроде согласился. Опять по кругу?</div></div><br>
По-моему, это ты согласился, что (foo . bar) и (bar . foo) — не одно и то же. Или ты так и не понял, что это значит?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>Ага, а то что эти критерии коррелируют с порядком стейтментов в do-нотации - это просто совпадение?</div></div><br>
Не коррелируют.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846980</guid>
        <pubDate>Thu, 29 Apr 2021 20:03:44 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846980</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846979'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:58:36+00:00">29.04.21, 19:58</time></span><div class='quote '>Но ты убери синтаксический сахар из кода и посмотри, каким образом эта зависимость выражается на самом деле.</div></div>Да ваще, код поменялся до неузнаваемости:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">main =</div><div class="code_line">&nbsp;&nbsp; &nbsp;putStrLn &quot;str1&quot; &#62;&#62;</div><div class="code_line">&nbsp;&nbsp; &nbsp;putStrLn &quot;str2&quot;</div></ol></div></div></div></div> <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T20:08:25+00:00">29.04.21, 20:08</time></span></span><br>
Кстати в Erlang/Elixir нет мутабельных переменных, но полно функций с побочными эффектами. Значит таки можно писать императивно (по вашему определению) без мутабельных переменных?]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846979</guid>
        <pubDate>Thu, 29 Apr 2021 19:58:36 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846979</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846976'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:46:00+00:00">29.04.21, 19:46</time></span><div class='quote '>Если по-твоему вот тут результат не зависит от порядка стейтментов, то я хз кто тут больше похож на Сирожу :)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">main = do</div><div class="code_line">&nbsp;&nbsp;putStrLn &quot;str1&quot;</div><div class="code_line">&nbsp;&nbsp;putStrLn &quot;str2&quot;</div></ol></div></div></div></div></div></div><br>
Так зависит. Но ты убери синтаксический сахар из кода и посмотри, каким образом эта зависимость выражается на самом деле.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846978</guid>
        <pubDate>Thu, 29 Apr 2021 19:51:13 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846978</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846974'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:26:14+00:00">29.04.21, 19:26</time></span><div class='quote '>Если ты не считаешь это необходимым условием, то мы его может вообще убрать для простоты рассмотрения.</div></div>В общем ладно. Если ты тоже как и Корвин, считаешь, что парадигма этого кода зависит от чистоты функций bar и foo:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">immutable a = foo(x)</div><div class="code_line">if(a == 0) return 1;</div><div class="code_line">immutable a1 = a + bar(a);</div><div class="code_line">if(a1 == 1) return 2;</div><div class="code_line">return 3;</div></ol></div></div></div></div>То мне не о чем больше с вами спорить.<br>
Делаем функции foo и bar чистыми, и опаньки - это ФП код, делаем с побочными эффектами и снова ИП :lol: <br>
Ну ок, оставайтесь при своем мнении.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846977</guid>
        <pubDate>Thu, 29 Apr 2021 19:46:16 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846977</link>
        <description><![CDATA[scrambrella: Функциональное и логическое программирование - единственно верные стили. ООП и ИП в топку. На С/С++ легко писать функционально.]]></description>
        <author>scrambrella</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846976</guid>
        <pubDate>Thu, 29 Apr 2021 19:46:00 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846976</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '>Почему это?</div></div>Потому что парадигма не может измениться если не меняется код :D Очевидно же.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '>Какой из этих примеров — чистая композиция функций (например, на Хаскелле), а какой — императивная последовательность statement&#39;ов (например, на Паскале)?</div></div>Последний - ИП, первые два ФП.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '>IO не имеет отношения к языку. Они разделены.</div></div>Это тут причем? Ты сказал, что все функции в Хаскеле чистые. Раз возможно IO, значит  возможны функции с побочными эффектами.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '>Не имеет. Тебе уже пример приводили.</div></div>Пример чего?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '> всего-то wiki на сайте языка, наполняемая и модерируемая сообществом хаскеллистов.<br>
При этом и Haskell Report не пишет ни о какой «последовательности инструкций».</div></div>Опять апеллирование к авторитету. :facepalm: <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '>Э нет, это чистая правда и просто факт. Но ты скатился до уровня Серёжи, ему тоже тыкали фактами в нос, а он продолжал витать в своих фантазиях.</div></div>Понеслась волшебная аргументация. Я не знаю как тебе уже объяснять. Если по-твоему вот тут результат не зависит от порядка стейтментов, то я хз кто тут больше похож на Сирожу :)<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">main = do</div><div class="code_line">&nbsp;&nbsp;putStrLn &quot;str1&quot;</div><div class="code_line">&nbsp;&nbsp;putStrLn &quot;str2&quot;</div></ol></div></div></div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '> а все другие монады, прячущие свои внутренности тоже в каком-то сговоре?</div></div>Откуда такой вывод? Почему все, если я говорил о хаскельном IO, в том числе и о монаде IO?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '>Порядок «вызова» IO-функций задаётся обычной чистой функциональной композицией.</div></div>В чистой ФП-композиции порядок может быть любым, уже обсуждали и ты вроде согласился. Опять по кругу?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846973'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T19:11:44+00:00">29.04.21, 19:11</time></span><div class='quote '>Нет. Критерием вычисления является конкретная монада, используемая в do-выражении.</div></div>Ага, а то что эти критерии коррелируют с порядком стейтментов в do-нотации - это просто совпадение? Не думаю. :lol:<br>
<br>
Ладно, походу этот холивор порвался.<br>
Лично мне надоело.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846974</guid>
        <pubDate>Thu, 29 Apr 2021 19:26:14 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846974</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846952'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T09:31:41+00:00">29.04.21, 09:31</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846916'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T11:18:26+00:00">28.04.21, 11:18</time></span><div class='quote '>Так и в ИП без побочных эффектов это так же не имеет никакого значения. Можно сделать такую реализацию, которая будет проводить хитрые анализы и менять последовательность выполнения (будет иметь право, т.к. видимый результат не изменится).</div></div>Так это будут уже детали реализации. А нам важен код, а не реализация исполнителя этого кода.</div></div><br>
Так в коде этого и не будет, если исходить из твоего определения. Не понимаю. Если нет побочных эффектов и  изменения состояния, то последствательность выполнения инструкций важна лишь в контексте корректности вычислений, а значит, это ничем от ФП не отличается. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T19:38:33+00:00">29.04.21, 19:38</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846952'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T09:31:41+00:00">29.04.21, 09:31</time></span><div class='quote '>Не исключаю, а делаю необязательным. Не надо искажать.</div></div><br>
Если ты не считаешь это необходимым условием, то мы его может вообще убрать для простоты рассмотрения.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В чистом ФП (идеальном) <strong class='tag-b'>в коде</strong> нет явных промежуточных результататов, даже иммутабельных</div></div><br>
Да почему это важно, если видимый результат никак от этого не зависит?<br>
<br>
Дальше ты опять скатываешься в языки, исходя из ложного предположения, что раз какой-нибудь C++ является императивным, то и любой код на нём отражает императивный стиль. Ну или я ошибаюсь, но тогда я вообще не понимаю, к чему твои примеры :) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T19:45:02+00:00">29.04.21, 19:45</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846952'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T09:31:41+00:00">29.04.21, 09:31</time></span><div class='quote '>В императивном коде такой фокус не прокатит.</div></div><br>
Аналогом того кода на haskell в С++ будет:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int x()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return 3;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int y()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return x() + 1</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int z()</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;return y() + 2;</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Для перестановки достаточно заранее объявить функции:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int x();</div><div class="code_line">int y();</div><div class="code_line">int z();</div></ol></div></div></div></div><br>
И инструкции тут ни при чем, это особенности областей видимости имен.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846973</guid>
        <pubDate>Thu, 29 Apr 2021 19:11:44 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846973</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '>не станет внезапно ФП.</div></div><br>
Почему это?<br>
<br>
Вот этот код тоже императивный:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo() +</div><div class="code_line">bar() +</div><div class="code_line">gee() +</div><div class="code_line">qux()</div></ol></div></div></div></div><br>
?<br>
<br>
А этот:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo() &#62;&#62;</div><div class="code_line">bar() &#62;&#62;</div><div class="code_line">gee() &#62;&#62;</div><div class="code_line">qux()</div></ol></div></div></div></div><br>
?<br>
<br>
Может, этот:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo() ;</div><div class="code_line">bar() ;</div><div class="code_line">gee() ;</div><div class="code_line">qux()</div></ol></div></div></div></div><br>
?<br>
<br>
Какой из этих примеров — чистая композиция функций (например, на Хаскелле), а какой — императивная последовательность statement&#39;ов (например, на Паскале)?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '>Не все. Иначе IO был бы просто невозможен.</div></div><br>
IO не имеет отношения к языку. Они разделены.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '>do-нотация имеет отношение к последовательности инструкций. Об этои говорит название нотации (do) и название её элементов (statements).</div></div><br>
Не имеет. Тебе уже пример приводили.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '>Некоторые авторы пытаются зачем-то откреститься от этого. Например в пресловутой статье: <a class='tag-url' href='https://wiki.haskell.org/Do_notation_considered_harmful' target='_blank'>https://wiki.haskell.org/Do_notation_considered_harmful</a> написано:</div></div><br>
:facepalm: всего-то wiki на сайте языка, наполняемая и модерируемая сообществом хаскеллистов.<br>
При этом и Haskell Report не пишет ни о какой «последовательности инструкций».<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '>Что в общем случае является ложью.</div></div><br>
Э нет, это чистая правда и просто факт. Но ты скатился до уровня Серёжи, ему тоже тыкали фактами в нос, а он продолжал витать в своих фантазиях.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '>Каждая IO-функция получает в качастве параметра, условное состояние внешнего мира, полученное из предыдущей IO-функции, делает IO и возвращает измененное состояние. НО&#33; Если, допустим, функции чтения символа с клавиатуры подсунуть несколько раз одно и то же состояние мира, то она запросто может вернуть разные значения. Чтобы такого не происходило, в Хаскеле IO-функции вместе с сотоянием мира плотно завернуты в монаду, и остальные функции не имеют доступа к этому состоянию и, соответственно, не могут заставить IO-функцию вызваться с одним и тем же состоянием.<br>
Получается, что IO-функция как хитрожопый коррупционер: все знают что делишки грязные, но нет никакой возможности доказать это в рамках языка, формально все чисто. А все потому что все коррупционеры (IO-функции) в сговоре и никому, кроме как друг-другу, свои внутренние дела не раскрывают.<br>
Но они все равно с побочными эффектами, иначе порядок их вызова был бы не важен. Тем они и отличаются от обычных функций.</div></div><br>
:facepalm: а все другие монады, прячущие свои внутренности тоже в каком-то сговоре?<br>
<br>
Порядок «вызова» IO-функций задаётся обычной чистой функциональной композицией. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T19:12:42+00:00">29.04.21, 19:12</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846969'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T14:19:58+00:00">29.04.21, 14:19</time></span><div class='quote '> Но ведь если бы там были IO-функции с побочными эффектами, То the order of statements очень даже был бы the criterion for the evaluation order</div></div><br>
Нет. Критерием вычисления является конкретная монада, используемая в do-выражении.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846969</guid>
        <pubDate>Thu, 29 Apr 2021 14:19:58 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846969</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846956'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T10:06:21+00:00">29.04.21, 10:06</time></span><div class='quote '>Мы знаем, что они чистые.</div></div>Если знаем, то ИП можно не применять. ИП полезно тем, что не нужно знать. Ты можешь знать если хочется, но тебе это не нужно, пусть об этом знает компилятор.<br>
От твоего знания чистые это функции или нет ИП не превращается в ФП и наоброт. Парадигма кода зависит от семантики языка, и собственно самого кода. От твоего знания что функции bar и foo чистые, ИП код<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>immutable a = foo(x)<br>
if(a == 0) return 1;<br>
immutable a1 = a + bar(a);<br>
if(a1 == 1) return 2;<br>
return 3;</div></div>не станет внезапно ФП.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846956'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T10:06:21+00:00">29.04.21, 10:06</time></span><div class='quote '>В Хаскелле все функции чистые</div></div>Не все. Иначе IO был бы просто невозможен.<br>
Каждая IO-функция получает в качастве параметра, условное состояние внешнего мира, полученное из предыдущей IO-функции, делает IO и возвращает измененное состояние. НО&#33; Если, допустим, функции чтения символа с клавиатуры подсунуть несколько раз одно и то же состояние мира, то она запросто может вернуть разные значения. Чтобы такого не происходило, в Хаскеле IO-функции вместе с сотоянием мира плотно завернуты в монаду, и остальные функции не имеют доступа к этому состоянию и, соответственно, не могут заставить IO-функцию вызваться с одним и тем же состоянием.<br>
Получается, что IO-функция как хитрожопый коррупционер: все знают что делишки грязные, но нет никакой возможности доказать это в рамках языка, формально все чисто. А все потому что все коррупционеры (IO-функции) в сговоре и никому, кроме как друг-другу, свои внутренние дела не раскрывают.<br>
Но они все равно с побочными эффектами, иначе порядок их вызова был бы не важен. Тем они и отличаются от обычных функций.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846956'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T10:06:21+00:00">29.04.21, 10:06</time></span><div class='quote '>и do-нотация, как и монады, не имеют отношения к чистоте.</div></div>Да, монады упрощают построение цепочек вызовов функций со скрытым внутренним состоянием.<br>
do-нотация имеет отношение к последовательности инструкций. Об этои говорит название нотации (do) и название её элементов (statements).<br>
Некоторые авторы пытаются зачем-то откреститься от этого. Например в пресловутой статье: <a class='tag-url' href='https://wiki.haskell.org/Do_notation_considered_harmful' target='_blank'>https://wiki.haskell.org/Do_notation_considered_harmful</a> написано:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>The order of statements is also not the criterion for the evaluation order. Also here only the data dependencies count.</div></div>Что в общем случае является ложью. В качестве примера там берутся чистые функции. Но ведь если бы там были IO-функции с побочными эффектами, То <em class='tag-i'>the order of statements</em> очень даже был бы <em class='tag-i'>the criterion for the evaluation order</em>, при том что никаких явных <em class='tag-i'>data dependencies</em> может вообще не быть. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-29T14:25:52+00:00">29.04.21, 14:25</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846961'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T12:52:07+00:00">29.04.21, 12:52</time></span><div class='quote '>А если так?<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">auto x = []{ return 3; };</div><div class="code_line">auto y = []{ return x() + 1; };</div><div class="code_line">auto z = []{ return y() + 2; };</div></ol></div></div></div></div></div></div><br>
Так не нужно. Вот если бы можно было так:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">auto z = []{ return y() + 2; };</div><div class="code_line">auto y = []{ return x() + 1; };</div><div class="code_line">auto x = []{ return 3; };</div></ol></div></div></div></div>то было бы нунифигасебе.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846961</guid>
        <pubDate>Thu, 29 Apr 2021 12:52:07 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846961</link>
        <description><![CDATA[Qraizer: А если так?<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">auto x = []{ return 3; };</div><div class="code_line">auto y = []{ return x() + 1; };</div><div class="code_line">auto z = []{ return y() + 2; };</div></ol></div></div></div></div>]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846956</guid>
        <pubDate>Thu, 29 Apr 2021 10:06:21 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846956</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846952'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T09:31:41+00:00">29.04.21, 09:31</time></span><div class='quote '>Польза большая: нам не нужно знать чистые эти функции или нет</div></div><br>
Мы знаем, что они чистые.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846952'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-29T09:31:41+00:00">29.04.21, 09:31</time></span><div class='quote '>То же самое и в do-нотации Haskell.</div></div><br>
В Хаскелле все функции чистые и do-нотация, как и монады, не имеют отношения к чистоте.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846952</guid>
        <pubDate>Thu, 29 Apr 2021 09:31:41 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846952</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846916'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T11:18:26+00:00">28.04.21, 11:18</time></span><div class='quote '>Так и в ИП без побочных эффектов это так же не имеет никакого значения. Можно сделать такую реализацию, которая будет проводить хитрые анализы и менять последовательность выполнения (будет иметь право, т.к. видимый результат не изменится).</div></div>Так это будут уже детали реализации. А нам важен код, а не реализация исполнителя этого кода.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846916'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T11:18:26+00:00">28.04.21, 11:18</time></span><div class='quote '>Это имеет значение только если у тебя есть побочные эффекты и изменение состояния или одним вычислениям нужен результат других. Первый случай ты исключаешь по определению, второй присутствует в ФП.</div></div>Не исключаю, а делаю необязательным. Не надо искажать. Второй твой тезис неверен. В чистом ФП (идеальном) <strong class='tag-b'>в коде</strong> нет явных промежуточных результататов, даже иммутабельных. Вот кусок программы на Haskell:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>x = 3<br>
y = x + 1<br>
z = y + 2<br>
</div></div>Может создаться ложное впечатление, что это последовательность из трех инструкций, аналогично, например этому коду в языке D:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">const x = 3;</div><div class="code_line">const y = x + 1;</div><div class="code_line">const z = y + 2;</div></ol></div></div></div></div><br>
Но тут нет никакой последовательности инструкций, тут даже в общем-то даже инструкций нет. Переменные не хранят промежуточных значений, поэтому можно переставлять строчки как угодно, ничего не меняется:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>z = y + 2<br>
y = x + 1<br>
x = 3</div></div>В императивном коде такой фокус не прокатит.<br>
В D в принципе возможно писать в аналогичном ФП-стиле при помощи лямбд:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">alias z = () =&#62; y() + 2;</div><div class="code_line">alias y = () =&#62; x() + 1;</div><div class="code_line">alias x = () =&#62; 3;</div></ol></div></div></div></div><br>
Забавно, но в C/C++ это можно это сделать, используя макросы. Вот такое ФП (причем полиморфное, все по-взрослому :lol: ):<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#define z (y + 2)</div><div class="code_line">#define y (x + 1)</div><div class="code_line">#define x 3</div></ol></div></div></div></div> C++ - лучший ФП-язык.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846916'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T11:18:26+00:00">28.04.21, 11:18</time></span><div class='quote '>Если мы убираем побочные эффекты и изменение состояния (на уровне семантики языка), то это все становится лишь деталью реализации.</div></div>Не совсем понимаю, что значит &quot;убираем изменение состояния на уровне семантики языка&quot;. Пример можно? В ИП промежуточные результяты создаются явно в коде, в виде переменных, в том числе иммутабельных. Если в коде явно не создавать промежуточных результатов, то наверное получится ФП. :)<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846918'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T12:04:04+00:00">28.04.21, 12:04</time></span><div class='quote '>И какая нам польза в этом знании?</div></div>Польза большая: нам не нужно знать чистые эти функции или нет, просто считаем, что инструкции выполняются друг за другом.<br>
Например в том же Erlang/Elixir вообще нет понятия чистоты функций. Они могут быть чистыми или грязными - пофиг. То же самое и в do-нотации Haskell.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846932</guid>
        <pubDate>Wed, 28 Apr 2021 18:39:56 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846932</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846925'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T13:57:13+00:00">28.04.21, 13:57</time></span><div class='quote '>Ссылка есть?</div></div>Та где-то тут в Холиварах. Поди найди, при неработающем поиске-то.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846927</guid>
        <pubDate>Wed, 28 Apr 2021 14:24:50 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846927</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846694'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T22:48:34+00:00">22.04.21, 22:48</time></span><div class='quote '>Что за ролик то про столицу IT ?</div></div><a class='tag-url' href='https://youtu.be/rjLjkgPNe1g' target='_blank'>IT-Столица России. Таганрог</a><br>
 :jokingly:]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846925</guid>
        <pubDate>Wed, 28 Apr 2021 13:57:13 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846925</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846920'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T12:34:10+00:00">28.04.21, 12:34</time></span><div class='quote '>Припоминаю спор о видах полиморфизма. </div></div><br>
Ссылка есть? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T14:02:36+00:00">28.04.21, 14:02</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846907'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T09:40:54+00:00">28.04.21, 09:40</time></span><div class='quote '>По поводу Rust. А вот этот вот Cell - это же не конструкция языка, а элемент стандратной библиотеки. Он внутри unsafe?</div></div><br>
Да, Cell, RefCell и остальное юзают внутри unsafe.]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846923</guid>
        <pubDate>Wed, 28 Apr 2021 13:20:46 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846923</link>
        <description><![CDATA[Pavia: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846920'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T12:34:10+00:00">28.04.21, 12:34</time></span><div class='quote '>Ну вот, а вы на sergioK-а наезжаете. sergioK нормальный парень.<br>
Цитата scrambrella @ 26 апреля, 10:41<br>
Программа должна работать на компьютере, который не умеет считать?<br>
Ужос, правда? :jokingly:<br>
</div></div><br>
На работающем не могут правильно сделать расчёты. <br>
Плохой софт отправил работников почты за решетку<br>
<a class='tag-url' href='https://habr.com/ru/company/itsoft/blog/554404/' target='_blank'>https://habr.com/ru/company/itsoft/blog/554404/</a><br>
 Джанет Скиннер рассказывает, что её разлучили с двумя детьми на девять месяцев, в течение которых она находилась в тюрьме, после того, как Horizon показал недостачу в £59,000. Она также сообщает, что потеряла предложение о работе из-за своей судимости. Время, проведенное ею и другими в тюрьме, невозможно вернуть, и это произошло, потому что программе доверяли на слово.]]></description>
        <author>Pavia</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846920</guid>
        <pubDate>Wed, 28 Apr 2021 12:34:10 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846920</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846726'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T15:01:18+00:00">23.04.21, 15:01</time></span><div class='quote '>Возможно ошибаюсь, но вроде именно он зарубил нормальный static if.</div></div>А чем if constexpr не устраивает? Я, кстати, пока ни разу не пользовался, так что моё мнение может быть необъективным, но-таки заявлю, что коли зарубил, значит были причины. Концепты, вон, тоже зарубили в своё время, зато сейчас они выглядят логичнее и понятнее. Та и std::filesystem нонешный мне нравится куда как сильнее по сравнению с начальной редакцией, слизанной с буста. Зато спешка с принятием std::wstring_convert и std::wbuffer_convert сказалась весьма неприятно. Я поначалу вслед за <strong class='tag-b'>Wound</strong> тоже был разочарован отказом от него, но проведя собственное &quot;<a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=414620&view=findpost&p=3829083' target='_blank'>расследование</a>&quot;, склоняюсь к тому, что буду скорее на стороне отмены. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T12:38:11+00:00">28.04.21, 12:38</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '>Можно, конечно скатываться в терминологическую демагогию, как это делаешь ты: ну типа раз в определении ИП написано &quot;мутабельный&quot;, значит ответ очевиден: низзя. А на остальное насрать.</div></div>Припоминаю спор о видах полиморфизма. :whistle: Я там топил за то, что неважно, как оно реализовано в объектом коде, и единственно важно, как оно преподносится языком в его грамматике. Правда, уже не помню, чем кончилось. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T12:45:43+00:00">28.04.21, 12:45</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '>Отсюда делаю. вывод: &quot;конвенционально принятое&quot; определение ИП устарело. Ключевое - это последовательность инструкций</div></div>Точно? Я бы определил императивность как метод, описывающий однозначную последовательность инструкций по получению результатов из входных данных. В отличие от декларативности, наиболее простым примером чего можно привести язык скриптов make. Одним из синонимом императивности является категоричность. По этому критерию ФП не ортогонально ИП, а является его более частным случаем, с дополнительными ограничительными методиками. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T12:49:08+00:00">28.04.21, 12:49</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846810'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:02:43+00:00">25.04.21, 21:02</time></span><div class='quote '>Не не понимаю, я ничего кроме hello world никогда не писал </div></div>Предлагаю перейти к решению квадратных уравнений. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T12:53:00+00:00">28.04.21, 12:53</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846817'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>scrambrella &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T07:41:46+00:00">26.04.21, 07:41</time></span><div class='quote '>Математически доказано, что невозможно проверить зависнет программа или нет. На этом можно остановиться.</div></div>Ну вот, а вы на <strong class='tag-b'>sergioK</strong>-а наезжаете. <strong class='tag-b'>sergioK</strong> нормальный парень.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846817'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>scrambrella &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T07:41:46+00:00">26.04.21, 07:41</time></span><div class='quote '>Программа должна работать на компьютере, который не умеет считать?</div></div>Ужос, правда? :jokingly: <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T12:56:04+00:00">28.04.21, 12:56</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846833'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T16:02:38+00:00">26.04.21, 16:02</time></span><div class='quote '>За const парятся в обязательном порядке.</div></div>Только его рассматривают не как декларацию иммутабельности, а как утверждение контракта. Как бы есть разница между гарантией и обещанием. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T13:03:36+00:00">28.04.21, 13:03</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846854'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T09:59:23+00:00">27.04.21, 09:59</time></span><div class='quote '>Поэтому <strong class='tag-b'>в ИП последовательность инструкций важна, а в ФП нет</strong>.</div></div>В догонку себе. Это следствие тех дополнительных качеств ФП, а не собственно базовое его отличие от ИП. Оно там просто всегда применимо. Я могу себе представить и в ИП то же самое, но конечно далеко не всегда, а в весьма частных случаях. Хотя тут от компилятора зависит, Intel C++, например, умеет раздербанивать всю программу целиком, и неважно, из скольких единиц трансляции она состоит. Запастись памятью и временем надо лишь.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846918</guid>
        <pubDate>Wed, 28 Apr 2021 12:04:04 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846918</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846894'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T08:08:37+00:00">28.04.21, 08:08</time></span><div class='quote '>Но даже если они все чистые все равно, последовательность инструкций никуда не девается. Она есть и мы можем на нее полагаться, мы можем думать, что они выполняются последовательно.</div></div><br>
И какая нам польза в этом знании?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846916</guid>
        <pubDate>Wed, 28 Apr 2021 11:18:26 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846916</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846907'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T09:40:54+00:00">28.04.21, 09:40</time></span><div class='quote '>Есть: в чистом ФП само понятие последовательность вычислений не имеет сымсла.</div></div><br>
Так и в ИП без побочных эффектов это так же не имеет никакого значения. Можно сделать такую реализацию, которая будет проводить хитрые анализы и менять последовательность выполнения (будет иметь право, т.к. видимый результат не изменится). <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T11:24:48+00:00">28.04.21, 11:24</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846894'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T08:08:37+00:00">28.04.21, 08:08</time></span><div class='quote '>Сферическое ИП в вакууме, по моему определению, это некая сущность, в котором есть течение времени, то есть у тебя всегда существует время, которое меняется само по себе от инструкции к инструкции. И возникают причинно следственные связи: значение переменной зависит от значения переменной вычисленной <em class='tag-i'>ранее</em> и так далее.</div></div><br>
Это имеет значение только если у тебя есть побочные эффекты  и изменение состояния или одним вычислениям нужен результат других. Первый случай ты исключаешь по определению, второй присутствует в ФП. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T11:27:06+00:00">28.04.21, 11:27</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846894'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T08:08:37+00:00">28.04.21, 08:08</time></span><div class='quote '>даже если функции считать чистыми, все равно, в определенном смысле, имеет мутабельный стейт. Условно говоря - это контекст (в лице стека, например). В третьей строке в контексте появилась новая переменная a1 - считай мутировал стейт. Какая по сути разница: в коробке лежал синий кубик, мы вытащили его и положили вместо него красный кубик или лежал синий, а красный мы положили рядом? Один фиг содержимое коробки (стейт) изменилось.</div></div><br>
Если мы убираем побочные эффекты и изменение состояния (на уровне семантики языка), то это все становится лишь деталью реализации.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846907</guid>
        <pubDate>Wed, 28 Apr 2021 09:40:54 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846907</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846851'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T09:14:35+00:00">27.04.21, 09:14</time></span><div class='quote '>Но тем не менее это не иммутабельность, т.к. ничто не мешает менять объект, на котором нет mut, посредством Cell:</div></div>По поводу Rust. А вот этот вот Cell - это же не конструкция языка, а элемент стандратной библиотеки. Он внутри unsafe? Я к тому, что не является ли этот Cell каким-то способом, так сказать обмануть компилятор?<br>
Ну как скажем в D можно тоже при желании мутировать immutable переменные в unsafe коде через cast. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-28T09:43:16+00:00">28.04.21, 09:43</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846896'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T08:45:27+00:00">28.04.21, 08:45</time></span><div class='quote '>Если нет побочных эффектов, то последовательность действий фактически важна лишь с точки зрения корректности вычислений. А тут нет никаких отличий от ФП.<br>
</div></div>Есть: в чистом ФП само понятие последовательность вычислений не имеет сымсла. Ты остальное-то читал?]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846896</guid>
        <pubDate>Wed, 28 Apr 2021 08:45:27 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846896</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846894'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-28T08:08:37+00:00">28.04.21, 08:08</time></span><div class='quote '>Но даже если они все чистые все равно, последовательность инструкций никуда не девается. Она есть и мы можем на нее полагаться, мы можем <em class='tag-i'>думать</em>, что они выполняются последовательно.</div></div><br>
Если нет побочных эффектов, то последовательность действий фактически важна лишь с точки зрения корректности вычислений. А тут нет никаких отличий от ФП.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846894</guid>
        <pubDate>Wed, 28 Apr 2021 08:08:37 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846894</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846868'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T15:36:24+00:00">27.04.21, 15:36</time></span><div class='quote '>Если это условие достаточное, то может быть такая реализация ИП, где мутабельности нет, а значит, побочным эффектам в приведённом тобой коде неоткуда взяться.</div></div>Видимо ты имеешь в виду такой вариант ИП-кода (по моему определению ИП), в котором нет мутабельных переменных и все функции чистые. Ты совершенно прав. Но ИП позволяет нам не думать о чистоте функций. Но даже если они все чистые все равно, последовательность инструкций никуда не девается. Она есть и мы можем на нее полагаться, мы можем <em class='tag-i'>думать</em>, что они выполняются последовательно. В чистом ФП нет никакой последовательности инструкций, и ты не только <em class='tag-i'>можешь не думать</em> о ней, по-хорошему ты <em class='tag-i'>не должен думать о ней</em>. Не знаю как у других, для меня лично понимание этого факта приверо к пониманию сути ФП. А понятие мутабельности/иммутабельности в чистом ФП вообще отсутствует. Там нечему быть мутабельным/иммутабельным.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846871'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T18:02:54+00:00">27.04.21, 18:02</time></span><div class='quote '>Ты не объясняешь, а приводишь странные примеры, в основном  Как и ниже, собственно.</div></div>А в чем их странность? Подобный код встречается сплошь и рядом.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846871'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T18:02:54+00:00">27.04.21, 18:02</time></span><div class='quote '>Зависит от наличия побочных эффектов</div></div>Ха. Хорошо, пусть foo и bar - это чистые функции, этот код написан в ФП-парадигме?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">immutable a = foo(x)</div><div class="code_line">if(a == 0) return 1;</div><div class="code_line">immutable a1 = a + bar(a);</div><div class="code_line">if(a1 == 1) return 2;</div><div class="code_line">return 3;</div></ol></div></div></div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846871'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T18:02:54+00:00">27.04.21, 18:02</time></span><div class='quote '>Нет. А ты похоже из тех, кто думает что иммутабельность - это про языки.</div></div>Во-первых, речь изначально шла о поддержке иммутабельности в языках, очевидно, что это про языки. Во-вторых, да, без поддержки в языке, иммутабельность, похоже, получается неполноценная. Есть примеры обратного?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846871'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T18:02:54+00:00">27.04.21, 18:02</time></span><div class='quote '>Так если оно так и есть?</div></div>Поэтому-то я и убираю лишние сущности, чтобы не было так.<br>
Попробуй вдуматься и понять мой ход мыслей еще раз, если конечно есть желание:<br>
<br>
Сферическое ИП в вакууме, по моему определению, это некая сущность, в котором есть течение времени, то есть у тебя всегда существует время, которое меняется само по себе от инструкции к инструкции. И возникают причинно следственные связи: значение переменной зависит от значения переменной вычисленной <em class='tag-i'>ранее</em> и так далее.<br>
В сферическом ФП в ваккуме, времени нет вообще, я бы даже сказал что даже нет понятия исполнения кода. Ведь функция это просто некая зависимость выходных данных от входных. В таком ФП даже переменных нет.<br>
<br>
Я нарочно поднял, так сказать, градус &quot;вакуумной сферичности&quot;, чтобы отсеять шелуху и оставить только фундаментальное отличия.<br>
<br>
В целом, если расширить понятие &quot;мутабельный стейт&quot;, то возможно традиционное определение ИП не будет противоречить моему тезису: &quot;можно писать императивно без применения <em class='tag-i'>мутабельных переменных</em>&quot;. Ведь если вдуматься, то вот этот код:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">immutable a = foo(x)</div><div class="code_line">if(a == 0) return 1;</div><div class="code_line">immutable a1 = a + bar(a);</div><div class="code_line">if(a1 == 1) return 2;</div><div class="code_line">return 3;</div></ol></div></div></div></div>даже если функции считать чистыми, все равно, в определенном смысле, имеет мутабельный стейт. Условно говоря - это контекст (в лице стека, например). В третьей строке в контексте появилась новая переменная a1 - считай мутировал стейт. Какая по сути разница: в коробке лежал синий кубик, мы вытащили его и положили вместо него красный кубик или лежал синий, а красный мы положили рядом? Один фиг содержимое коробки (стейт) изменилось.<br>
В русской википедии в статье о ФП (не ИП, :lol: ) есть интересная цитата:<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Противопоставляется парадигме императивного программирования, которая описывает процесс вычислений как последовательное изменение состояний (<strong class='tag-b'>в значении, подобном таковому в теории автоматов</strong>).</div></div>Обрати внимание на выделенную часть. Это не то самое о чем я написал выше?<br>
В таком смысле получается, что последовательность инструкций и мутабельный стейт являются следствиями друг друга. То есть достаточно включить одну из этих сущностей в определение и другая автоматически будет следовать из нее.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846871</guid>
        <pubDate>Tue, 27 Apr 2021 18:02:54 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846871</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846854'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T09:59:23+00:00">27.04.21, 09:59</time></span><div class='quote '>Почему мне не нравится общепринятое определение, я тебе уже объяснял, но ты игнорируешь мои объяснения.</div></div><br>
Ты не объясняешь, а приводишь странные примеры, в основном :) Как и ниже, собственно.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Теперь это функциональщина?</div></div><br>
Зависит от наличия побочных эффектов :) <br>
Ты приводишь очень маленькие куски кода.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Опять начнешь растекаться мыслью по древу, что тут нельзя точно сказать, что это смесь разных парадигм и так далее? :lol: <br>
</div></div><br>
Так если оно так и есть? <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Ты похоже один из тех, кто думает, что const в C/C++ - это и есть иммутабельность. :lol:</div></div><br>
Нет. А ты похоже из тех, кто думает что иммутабельность - это про языки.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846868</guid>
        <pubDate>Tue, 27 Apr 2021 15:36:24 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846868</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846854'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T09:59:23+00:00">27.04.21, 09:59</time></span><div class='quote '>То что в моем определении нет необходимости в мутабельных переменных, не означает, что ИП не может иметь побочных эффектов. В общепринятом определении наличие последовательности инструкций - это необходимое, но недостаточное условие для ИП, а в моем это необходимое и достаточное условие.</div></div><br>
Если это условие достаточное, то может быть такая реализация ИП, где мутабельности нет, а значит, побочным эффектам в приведённом тобой коде неоткуда взяться.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846854</guid>
        <pubDate>Tue, 27 Apr 2021 09:59:23 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846854</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:52:42+00:00">26.04.21, 15:52</time></span><div class='quote '>Отлично, &quot;не читал, но мнение имею&quot;, &quot;слышал звон, но не знаю где он&quot;. Как-то так.</div></div>Я твой последний код не читал и никакого мнения по нему не высказал. Я давно изучал Хаскель и мне приходится прилагать усилия для расшифровки его закорючек если код чуть сложнее тривиального. Я просто не хочу это делать потому что, полностью уверен, что из анализа твоего примера не будет добавлено к уже сказанному <em class='tag-i'>ничего нового</em>.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846834'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T16:11:35+00:00">26.04.21, 16:11</time></span><div class='quote '>А ещё есть шутка, что Хаскелл --- это лучший императивный язык.<br>
<a class='tag-url' href='https://wiki.haskell.org/Do_notation_considered_harmful' target='_blank'>https://wiki.haskell.org/Do_notation_considered_harmful</a></div></div>Я читал эту статью. Первый раз лет пять назад, когда изучал Хаскель, второй раз позавчера :)<br>
То что там написано не опровергает того что пишу я. Результат выполнения инструкций в do-нотации будет таким же как если бы они выполнялись последовательно, вне зависимости от того чистые там функции или грязные. Согласен? В точности как в ИП. Статья большая, а ты выбрал одну фразу и выдрал ее из контекста. Молодец, чо. :)<br>
В шутке про лучший императивный язык, как обычно только доля шутки. На Хаскеле можно извратиться и писать императивно, я видел даже эквивалент обычных циклов, сделанный на монадах. Правда Хаскель скорее все же худший императивный язык :)<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:52:42+00:00">26.04.21, 15:52</time></span><div class='quote '>А если б не было побочных эффектов?</div></div>Без побочных результат не изменится. Но в ИП мы не знаем есть ли там побочные эффекты или нет. Компилятор может знать, а может и не знать об этих эффектах.<br>
Поэтому <strong class='tag-b'>в ИП последовательность инструкций важна, а в ФП нет</strong>. Нужели ты оспариваешь даже этот тезис? Он жн полностью согласуется как с моим определением, так и с общепринятым. Повторю вопрос, у тебя какое-то свое определение?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:52:42+00:00">26.04.21, 15:52</time></span><div class='quote '>Не потерял, я тебе специально такой кусок привёл, где можно поменять порядок композиции, чтоб ты подумал:</div></div>Я ответил на этот вопрос, ты правда никак не отреагировал.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846832'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:52:42+00:00">26.04.21, 15:52</time></span><div class='quote '>Впрочем, давай рассмотрим твой кусок:</div></div> :facepalm: И ты мне предлагаешь проверить память после этого. Обсуждали же уже этот кусок и этот вопрос. Смотри конец поста: <a class='tag-url' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765' target='_blank'>Что делать с жунами (сообщение #3846765)</a><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846833'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T16:02:38+00:00">26.04.21, 16:02</time></span><div class='quote '>Так ты же выше отказался от общепринятого определения ИП, убрав оттуда изменение состояния. Откуда тогда побочные эффекты? До сих пор не понимаю, чем тебе не нравится &quot;обычное&quot; определение ИП.</div></div>То что в моем определении нет необходимости в мутабельных переменных, не означает, что ИП не может иметь побочных эффектов. В общепринятом определении наличие последовательности инструкций - это необходимое, но недостаточное условие для ИП, а в моем это необходимое и достаточное условие.<br>
Почему мне не нравится общепринятое определение, я тебе уже объяснял, но ты игнорируешь мои объяснения. Еще примеры:<br>
Это императивщина?<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">int a = foo(x)</div><div class="code_line">if(a == 0) return 1;</div><div class="code_line">a = a + bar(a);</div><div class="code_line">if(a == 1) return 2;</div><div class="code_line">return 3;</div></ol></div></div></div></div><br>
Теперь добавим иммутабельности.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">immutable a = foo(x)</div><div class="code_line">if(a == 0) return 1;</div><div class="code_line">immutable a1 = a + bar(a);</div><div class="code_line">if(a1 == 1) return 2;</div><div class="code_line">return 3;</div></ol></div></div></div></div>Теперь это функциональщина?<br>
Опять начнешь растекаться мыслью по древу, что тут нельзя точно сказать, что это смесь разных парадигм и так далее? :lol: <br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846833'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T16:02:38+00:00">26.04.21, 16:02</time></span><div class='quote '>Почему первое предложение про тебя, а второе про всех? <br>
Вот ты и не парился, когда писал <br>
<br>
За const парятся в обязательном порядке.</div></div>Ты похоже один из тех, кто думает, что const в C/C++ - это и есть иммутабельность. :lol:<br>
За const в мейнстриме начали парится с появлением его в C++ и C, то бишь в начале 90-х. С иммутабельностью мало кто парится и по сей день.<br>
Что касается лично меня. Я начал париться за const с 1994-го когда мне в инстутуте объяснили зачем он нужен. На иммутабельность я обратил внимание когда начал писать на D (лет 7 назад), а окончательно уверовал в ее полезность, когда начал изучать ФП на примере Хаскеля (лет 5 назад).<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846833'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T16:02:38+00:00">26.04.21, 16:02</time></span><div class='quote '>Да даже на системном уровне попадается что-то в духе RCU, например </div></div>RCU прямого отношения к иммутабельности не имеет. Имутабельность может форсировать RCU, но не наоборот. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-27T10:08:33+00:00">27.04.21, 10:08</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846851'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2021-04-27T09:14:35+00:00">27.04.21, 09:14</time></span><div class='quote '>Именно в таком виде нет, т.к. если бы было можно, то легко было бы нарушить правило BC &quot;на объект есть только одна mut ссылка&quot;. Но тем не менее это не иммутабельность, т.к. ничто не мешает менять объект, на котором нет mut, посредством Cell:</div></div>Мде. Похоже и правда полноценную иммутабельность можно сделать только в языках с GC.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846851</guid>
        <pubDate>Tue, 27 Apr 2021 09:14:35 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846851</link>
        <description><![CDATA[OpenGL: Именно в таком виде нет, т.к. если бы было можно, то легко было бы нарушить правило BC &quot;на объект есть только одна mut ссылка&quot;. Но тем не менее это не иммутабельность, т.к. ничто не мешает менять объект, на котором нет mut, посредством Cell:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">use std::cell::Cell;</div><div class="code_line">&nbsp;</div><div class="code_line">struct Foo</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;field: Cell&#60;i32&#62;,</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">impl Foo</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;fn new() -&#62; Self</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;Foo{field: Cell::new(42)}</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">fn main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Иммутабельный объект</div><div class="code_line">&nbsp;&nbsp; &nbsp;let f = Foo::new();</div><div class="code_line">&nbsp;&nbsp; &nbsp;println!(&quot;{:?}&quot;, f.field.get());</div><div class="code_line">&nbsp;&nbsp; &nbsp;f.field.set(-42);</div><div class="code_line">&nbsp;&nbsp; &nbsp;// Упс, он поменялся</div><div class="code_line">&nbsp;&nbsp; &nbsp;println!(&quot;{:?}&quot;, f.field.get());</div><div class="code_line">}</div></ol></div></div></div></div><br>
Вывод:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">42</div><div class="code_line">-42</div></ol></div></div></div></div>]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846850</guid>
        <pubDate>Tue, 27 Apr 2021 08:49:13 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846850</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846831'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>OpenGL &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:40:28+00:00">26.04.21, 15:40</time></span><div class='quote '>В расте нет, там в этом плане всё точно так же.</div></div>Да ладно? :blink: Раст позволяет такие вот фокусы?<br>
<a class='tag-url' href='https://glot.io/snippets/fy2i5lgz8g' target='_blank'>https://glot.io/snippets/fy2i5lgz8g</a><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import std.stdio;</div><div class="code_line">struct Foo {</div><div class="code_line">&nbsp;&nbsp; &nbsp;int a;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this(int x) { a = x; }</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">struct Bar {</div><div class="code_line">&nbsp;&nbsp; &nbsp;Foo* foo;</div><div class="code_line">&nbsp;&nbsp; &nbsp;this(Foo* f) { foo = f; }</div><div class="code_line">&nbsp;&nbsp; &nbsp;void print() const {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;writeln(foo.a);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void main() {</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto foo = new Foo(10);</div><div class="code_line">&nbsp;&nbsp; &nbsp;const bar = const Bar(foo); </div><div class="code_line">&nbsp;&nbsp; &nbsp;bar.print();</div><div class="code_line">&nbsp;&nbsp; &nbsp;//bar.foo.a = 11; // ошибка компиляции, bar иммутабелен?</div><div class="code_line">&nbsp;&nbsp; &nbsp;foo.a = 11; &nbsp; &nbsp; &nbsp; // опаньки, bar мутировал, компилятор не возражает</div><div class="code_line">&nbsp;&nbsp; &nbsp;bar.print();</div><div class="code_line">}</div></ol></div></div></div></div>]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846847</guid>
        <pubDate>Tue, 27 Apr 2021 06:25:38 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846847</link>
        <description><![CDATA[OpenGL: А всё-таки, какое имеет отношение opaque struct к иммутабельности?]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846834</guid>
        <pubDate>Mon, 26 Apr 2021 16:11:35 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846834</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '>Честно говоря лень уже дальше разбираться. Мое знание Хаскеля достаточно базовое и довольно тяжело копаться даже в несложных кусках.<br>
Погуглив по словам &quot;haskell do imperative&quot; обнаружил кучу упоминаний о том, что на хаскеле можно (но не нужно) писать имеративно, применяя монады, что do-нотация является псевдоимперативной или imperative style и так далее.</div></div><br>
А ещё есть шутка, что Хаскелл --- это лучший императивный язык.<br>
<br>
<a class='tag-url' href='https://wiki.haskell.org/Do_notation_considered_harmful' target='_blank'>https://wiki.haskell.org/Do_notation_considered_harmful</a><br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><strong class='tag-b'>Criticism</strong><br>
Haskell&#39;s do notation is popular and ubiquitous. However we shall not ignore that there are several problems. Here we like to shed some light on aspects you may not have thought about, so far.<br>
<br>
<strong class='tag-b'>Didactics</strong><br>
The do notation hides functional details. This is wanted in order to simplify writing imperative style code fragments. The downsides are that:<br>
<br>
- Since do notation is used almost everywhere IO takes place, newcomers quickly believe that the do notation is necessary for doing IO,<br>
- Newcomers might think that IO is somehow special and non-functional, in contrast to the advertisement for Haskell being purely functional,<br>
- Newcomers might think that the order of statements determines the order of execution.</div></div><br>
Обрати внимание на последний пункт. Да и остальные.<br>
<br>
Ну и там далее в статье примеры &quot;misunderstanding&quot;]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846833</guid>
        <pubDate>Mon, 26 Apr 2021 16:02:38 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846833</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T10:40:37+00:00">26.04.21, 10:40</time></span><div class='quote '>А за счёт чего наблюдаемый результат может измениться?</div></div>За счет побочных эффектов, очевидно. Причем побочных эффектов в реальности может и не быть, но если компилятор об этом не знает, то он не будет переставлять местами инструкции.</div></div><br>
Так ты же выше отказался от общепринятого определения ИП, убрав оттуда изменение состояния. Откуда тогда побочные эффекты? До сих пор не понимаю, чем тебе не нравится &quot;обычное&quot; определение ИП. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-26T16:10:14+00:00">26.04.21, 16:10</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '>Я писал много и на Си и на C++. Никто на парится иммутабельностью вообще.</div></div><br>
Почему первое предложение про тебя, а второе про всех? :D <br>
Вот ты и не парился, когда писал :) <br>
<br>
За const парятся в обязательном порядке. <br>
<br>
По поводу иммутабельности в узком смысле обычно задумываются в контексте структур данных и многопоточности. Зачастую что-то используют.<br>
<br>
Да даже на системном уровне попадается что-то в духе RCU, например :-?]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846832</guid>
        <pubDate>Mon, 26 Apr 2021 15:52:42 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846832</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '>Честно говоря лень уже дальше разбираться. Мое знание Хаскеля достаточно базовое и довольно тяжело копаться даже в несложных кусках.<br>
Погуглив по словам &quot;haskell do imperative&quot; обнаружил кучу упоминаний о том, что на хаскеле можно (но не нужно) писать имеративно, применяя монады, что do-нотация является псевдоимперативной или imperative style и так далее.</div></div><br>
Отлично, &quot;не читал, но мнение имею&quot;, &quot;слышал звон, но не знаю где он&quot;. Как-то так.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '>За счет побочных эффектов, очевидно.</div></div><br>
А если б не было побочных эффектов?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '>Ты похоже потерял нить, проследи эту ветку немного назад. Речь вроде шла об этом куске:</div></div><br>
Не потерял, я тебе специально такой кусок привёл, где можно поменять порядок композиции, чтоб ты подумал:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo x = x + 1</div><div class="code_line">bar x = x * 2</div><div class="code_line">&nbsp;</div><div class="code_line">gee = foo . bar</div><div class="code_line">qux = bar . foo</div></ol></div></div></div></div><br>
gee и qux --- это одинаковые функции или разные?<br>
<br>
Впрочем, давай рассмотрим твой кусок:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = foo(x)</div><div class="code_line">bar(a)</div></ol></div></div></div></div><br>
заменим a на сам вызов:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bar(foo(x))</div></ol></div></div></div></div><br>
<br>
программа из императивной сразу стала функциональной? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-26T15:58:30+00:00">26.04.21, 15:58</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '>Я писал много и на Си и на C++. Никто на парится иммутабельностью вообще.</div></div><br>
Про никто довольно смелое заявление. И даже если действительно не существует ни одного человека/проекта, использующего такую возможность, это не означает отсутствие самой возможности.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846831</guid>
        <pubDate>Mon, 26 Apr 2021 15:40:28 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846831</link>
        <description><![CDATA[OpenGL: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846830'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T15:29:32+00:00">26.04.21, 15:29</time></span><div class='quote '>В Rust есть полноценная иммутабельность</div></div><br>
В расте нет, там в этом плане всё точно так же.]]></description>
        <author>OpenGL</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846830</guid>
        <pubDate>Mon, 26 Apr 2021 15:29:32 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846830</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T10:40:37+00:00">26.04.21, 10:40</time></span><div class='quote '>А если не встречал, то что это доказывает? Я так-то на Си не пишу.</div></div>Я писал много и на Си и на C++. Никто на парится иммутабельностью вообще. Раньше даже const-ом не заморачивались, сейчас юзают const, который тоже не является полноценной заменой иммутабельности. В общем никакой поддержки иммутабельности в самих языках C/С++/JS/PHP и многих других нет. Есть только попытки эмулировать ее теми или иными способами, и эти эмуляции мало кого интересуют. В Rust есть полноценная иммутабельность, в D тоже есть.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T10:40:37+00:00">26.04.21, 10:40</time></span><div class='quote '>&quot;Не имеет значения&quot; и &quot;отсутствует&quot; --- не одно и то же</div></div>А ты не противопоставляй эти тезисы. Последовательность отсутствует в ФП-коде, потому что не она не имеет значения. То бишь сам ФП-код не задает никакой последовательности действий. Это уже реализация имеет какую-то последовательность, которая тоже может быть любой.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T10:40:37+00:00">26.04.21, 10:40</time></span><div class='quote '>Не обязательно. И do-нотация не завязана на монаду IO, она работает с любой монадой, например монадой списков:</div></div>Честно говоря лень уже дальше разбираться. Мое знание Хаскеля достаточно базовое и довольно тяжело копаться даже в несложных кусках.<br>
Погуглив по словам &quot;haskell do imperative&quot; обнаружил кучу упоминаний о том, что на хаскеле можно (но не нужно) писать имеративно, применяя монады, что do-нотация является псевдоимперативной или imperative style и так далее.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T10:40:37+00:00">26.04.21, 10:40</time></span><div class='quote '>За счёт чего же результат может измениться? )</div></div><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T10:40:37+00:00">26.04.21, 10:40</time></span><div class='quote '>А за счёт чего наблюдаемый результат может измениться?</div></div>За счет побочных эффектов, очевидно. Причем побочных эффектов в реальности может и не быть, но если компилятор об этом не знает, то он не будет переставлять местами инструкции.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846820'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T10:40:37+00:00">26.04.21, 10:40</time></span><div class='quote '>Это в первом случае, где у функций разные типы. А во втором? Там всё прекрасно скомпилируется. А результат поменяется?</div></div>Ты похоже потерял нить, проследи эту ветку немного назад. Речь вроде шла об этом куске:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = foo(x)</div><div class="code_line">bar(a)</div></ol></div></div></div></div>А ты о каком?]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846820</guid>
        <pubDate>Mon, 26 Apr 2021 10:40:37 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846820</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T09:16:53+00:00">26.04.21, 09:16</time></span><div class='quote '>А ты встречал чтобы кто-нибудь в C/С++ задействовал opaque типы ради иммутабельности? Пруфы пожалуйста.</div></div><br>
А если не встречал, то что это доказывает? Я так-то на Си не пишу.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T09:16:53+00:00">26.04.21, 09:16</time></span><div class='quote '>В GHC задан, в другом компиляторе может быть не задан. Ты же надеюсь понимаешь, что мы обсуждаем не конкретные реализации, а ФП в целом? Ты же сам признал, что порядок вычисления аргументов функции в ФП не имеет значения.</div></div><br>
&quot;Не имеет значения&quot; и &quot;отсутствует&quot; --- не одно и то же<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T09:16:53+00:00">26.04.21, 09:16</time></span><div class='quote '>Как минимум она означает, что foo будет выполнена раньше чем bar. Вся эта ваша монада IO для этого и предназначена: дать возможность в Haskell выполнять код последовательно, потому что IO - это связь с внешним миром, который императивен.</div></div><br>
Не обязательно. И do-нотация не завязана на монаду IO, она работает с любой монадой, например монадой списков:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">import Data.Char</div><div class="code_line">&nbsp;</div><div class="code_line">foo = map chr . map (+ ord &#39;a&#39;)</div><div class="code_line">bar = filter even</div><div class="code_line">gee x y = (x, y)</div><div class="code_line">&nbsp;</div><div class="code_line">main =</div><div class="code_line">&nbsp;&nbsp; &nbsp;let x = [1,2,3]</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;y = [4,5,6]</div><div class="code_line">&nbsp;&nbsp; &nbsp;in print $ do</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;a &#60;- foo x</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;b &#60;- bar y</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return $ gee a b</div></ol></div></div></div></div><br>
<a class='tag-url' href='https://ideone.com/0wW9IY' target='_blank'>https://ideone.com/0wW9IY</a><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">[(&#39;b&#39;,4),(&#39;b&#39;,6),(&#39;c&#39;,4),(&#39;c&#39;,6),(&#39;d&#39;,4),(&#39;d&#39;,6)]</div></ol></div></div></div></div><br>
Порядок определяется реализацией монады для конкретного типа, а не do-выражением.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T09:16:53+00:00">26.04.21, 09:16</time></span><div class='quote '>Результат может измениться. А вот в чистом ФП (например Хаскеле) ничего измениться не может.</div></div><br>
За счёт чего же результат может измениться? )<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T09:16:53+00:00">26.04.21, 09:16</time></span><div class='quote '>Ключевое тут &quot;не изменяет наблюдаемый результат&quot;</div></div><br>
А за счёт чего наблюдаемый результат может измениться?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846818'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-26T09:16:53+00:00">26.04.21, 09:16</time></span><div class='quote '>Если поменять местами строчки, оно просто не скомпилируется.</div></div><br>
Это в первом случае, где у функций разные типы. А во втором? Там всё прекрасно скомпилируется. А результат поменяется?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846818</guid>
        <pubDate>Mon, 26 Apr 2021 09:16:53 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846818</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>Мало ли что ты не встречал.</div></div>А ты встречал чтобы кто-нибудь в C/С++ задействовал opaque типы ради иммутабельности? Пруфы пожалуйста.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>В чём тут трешевость и костыльность?</div></div>В том, что гарантиии иммутабельности дает не язык, а код, то бишь программист. Например те же функции чтения могут из-за ошибки программиста изменить  opaque данные, и компилятор возражать не будет.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>И что, что это деталь реализации? Порядок задан? Задан.</div></div>В GHC задан, в другом компиляторе может быть не задан. Ты же надеюсь понимаешь, что мы обсуждаем не конкретные реализации, а ФП в целом? Ты же сам признал, что порядок вычисления аргументов функции в ФП не имеет значения.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>Нет, это то, чем она является.</div></div>Ну тогда она является императивными машинными кодами, а реального ФП не существует.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>Что, по-твоему, означает эта запись:</div></div>Как минимум она означает, что foo будет выполнена раньше чем bar. Вся эта ваша монада IO для этого и предназначена: дать возможность в Haskell выполнять код последовательно, потому что IO - это связь с внешним миром, который императивен.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>И что, что она выполнена до? Что будет, если поменять их местами? Чем по-твоему это отличается от Хаскелла, например? Чем это отличается от ФП, если реальное вычисление может быть выполнено в любом порядке?</div></div>Если поменять местами строчки, оно просто не скомпилируется. Тем что во всякой императивщине отложенность прописывается явно, то есть программист сам решает в каком порядке делать вычисления, а в Хаскелле програмисту пофиг (до тех пор пока не столкнется с императивной реальностью) в каком порядке оно будет считаться. От ФП отличается тем, что в ИП программист точно знает, что конечный результат будет как при последовательном выполнении. А в ФП наплевать на порядок выполнения вообще, компилятор может выполнять функции в любом нужном ему порядке.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>Ответь лучше на вопрос: почему в ИП порядок имеет значение? Что будет, если в<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = foo(x)</div><div class="code_line">b = bar(y)</div><div class="code_line">gee(a, b)</div></ol></div></div></div></div>поменять местами вызовы foo и bar:<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">b = bar(y)</div><div class="code_line">a = foo(x)</div><div class="code_line">gee(a, b)</div></ol></div></div></div></div>?</div></div>Результат <em class='tag-i'>может</em> измениться. А вот в чистом ФП (например Хаскеле) ничего измениться не может.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846812'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T21:57:22+00:00">25.04.21, 21:57</time></span><div class='quote '>И ещё вопрос: для ФПшной композиции порядок важен?</div></div>Порядок чего? Порядок записи конечно важен, могут же получиться в итоге разные функции. Примерно как спросить, поменяется ли что-нибудь если в числе 42 поменять местами 2 и 4.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846813'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T23:01:09+00:00">25.04.21, 23:01</time></span><div class='quote '>И кроме всего прочего, как компилятор, так и процессор могут переставлять инструкции при необходимости, если это не нарушает связи между данными и не изменяет наблюдаемый результат, поэтому порядок инструкций языка может не везде совпадать с реальным порядком выполнения.</div></div>Ключевое тут &quot;не изменяет наблюдаемый результат&quot;. Более того, наблюдаемый результат <em class='tag-i'>обязан</em> быть таким же как при последовательном выполнении инструкций. То есть компилятор может делать все что угодно (детали реализации), но выглядеть все должно так, как будто инструкции выполняются одна за другой.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846817</guid>
        <pubDate>Mon, 26 Apr 2021 07:41:46 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846817</link>
        <description><![CDATA[scrambrella: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846186'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-04-10T15:58:10+00:00">10.04.21, 15:58</time></span><div class='quote '>Использовались ли математические методы доказательства правильности разработанных алгоритмов?<br>
На закуску: приходилось ли проектировать системы с учётом возможных неизвестных аппаратных багов в процессорах?</div></div><br>
Математически доказано, что невозможно проверить зависнет программа или нет. На этом можно остановиться.<br>
Программа должна работать на компьютере, который не умеет считать?]]></description>
        <author>scrambrella</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846813</guid>
        <pubDate>Sun, 25 Apr 2021 23:01:09 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846813</link>
        <description><![CDATA[korvin: И кроме всего прочего, как компилятор, так и процессор могут переставлять инструкции при необходимости, если это не нарушает связи между данными и не изменяет наблюдаемый результат, поэтому порядок инструкций языка может не везде совпадать с реальным порядком выполнения.<br>
<br>
Например <a class='tag-url' href='http://csg.csail.mit.edu/pubs/memos/Memo-493/memo-493.pdf' target='_blank'>http://csg.csail.mit.edu/pubs/memos/Memo-493/memo-493.pdf</a>]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846812</guid>
        <pubDate>Sun, 25 Apr 2021 21:57:22 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846812</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>Я вообще никогда не встречал, чтобы кто-то использовал opaque типы ради иммутабельности.</div></div><br>
Мало ли что ты не встречал.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>Это же трешовый костыль </div></div><br>
В чём тут трешевость и костыльность?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>Ты бы еще просто запрет программисту менять объект назвал поддержкой иммутабельности в языке.</div></div><br>
WUT?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>надо понимать, что это просто деталь реализации</div></div><br>
И что, что это деталь реализации? Порядок задан? Задан.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>Судя по тому, что я нашел в интернетах, Haskell не запрещает реализации вычисляющие операнды в любом порядке.</div></div><br>
И что? Calling conventions тоже разные бывают.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>То что do-нотация является сахаром к монаде - это не семантика, это детали реализации</div></div><br>
Нет, это то, чем она является.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>Семантика же заключается в последовательном выполнении</div></div><br>
Нет, не заключается.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>И do-нотация, кмк, отходит от ФП в сторону ИП.</div></div><br>
Не отходит.<br>
<br>
Что, по-твоему, означает эта запись:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">do</div><div class="code_line">&nbsp;&nbsp; &nbsp;a &#60;- foo x</div><div class="code_line">&nbsp;&nbsp; &nbsp;b &#60;- bar y</div><div class="code_line">&nbsp;&nbsp; &nbsp;return $ gee a b</div></ol></div></div></div></div><br>
?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>Пример с Promise неудачен, функция foo-то все равно выполнена до начала выполнения функции bar.</div></div><br>
И что, что она выполнена до? Что будет, если поменять их местами? Чем по-твоему это отличается от Хаскелла, например? Чем это отличается от ФП, если реальное вычисление может быть выполнено в любом порядке?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846807'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T19:44:15+00:00">25.04.21, 19:44</time></span><div class='quote '>Результат гарантированно будет таким же как и при реально последовательном выполнении, иначе это неправильный компилятор.<br>
В общем, ты везде ссылаешься на конкретные реализации, причем разные в разных ФП-языках.</div></div><br>
Что ты вообще несёшь?<br>
<br>
Ответь лучше на вопрос: почему в ИП порядок имеет значение? Что будет, если в <br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = foo(x)</div><div class="code_line">b = bar(y)</div><div class="code_line">gee(a, b)</div></ol></div></div></div></div><br>
поменять местами вызовы foo и bar:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">b = bar(y)</div><div class="code_line">a = foo(x)</div><div class="code_line">gee(a, b)</div></ol></div></div></div></div><br>
? <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-25T22:20:49+00:00">25.04.21, 22:20</time></span></span><br>
И ещё вопрос: для ФПшной композиции порядок важен?<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo x = x + x</div><div class="code_line">bar x = (x, x)</div></ol></div></div></div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo . bar</div></ol></div></div></div></div><br>
и<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bar . foo</div></ol></div></div></div></div><br>
— одно и то же или нет?<br>
<br>
А тут:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo x = x + 1</div><div class="code_line">bar x = x * 2</div><div class="code_line">&nbsp;</div><div class="code_line">foo . bar</div><div class="code_line">bar . foo</div></ol></div></div></div></div><br>
?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846810</guid>
        <pubDate>Sun, 25 Apr 2021 21:02:43 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846810</link>
        <description><![CDATA[sergioK: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846791'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T09:31:09+00:00">25.04.21, 09:31</time></span><div class='quote '>Значит, sergioK и вправду джун, раз не понимает даже статей, на которые сам ссылается. )</div></div><br>
Не не понимаю, я ничего кроме hello world никогда не писал  ;)]]></description>
        <author>sergioK</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846807</guid>
        <pubDate>Sun, 25 Apr 2021 19:44:15 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846807</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846791'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T09:31:09+00:00">25.04.21, 09:31</time></span><div class='quote '>Нет, не ошибаюсь. Но раз ты не понял, о чём я, то подскажу: opaque struct + функции чтения.</div></div>Это ты называешь поддержкой иммутабельности в языке? Я вообще никогда не встречал, чтобы кто-то использовал opaque типы ради иммутабельности. Это же трешовый костыль вроде immutable.js. Ты бы еще просто запрет программисту менять объект назвал поддержкой иммутабельности в языке.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846791'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T09:31:09+00:00">25.04.21, 09:31</time></span><div class='quote '>В моём примере нет списка.</div></div>Тут нет списка?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846690'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T22:03:43+00:00">22.04.21, 22:03</time></span><div class='quote '><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">contains []     e = False</div><div class="code_line">contains (x:xs) e = x == e || contains xs e</div></ol></div></div></div></div></div></div>Что касается оператора ||, то хотя в конкретной реализации (например GHC) сначала действительно будет вычислено значение левого операнда, надо понимать, что это просто деталь реализации. || - это ведь просто функция двух аргументов и ты сам совершенно правильно говорил, что порядок вычисления этих аргументов не имеет значения в ФП:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846687'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:08:39+00:00">22.04.21, 21:08</time></span><div class='quote '>Странный вопрос. Для чистого ФП разницы нет (разве что одна из функций bar, baz значительно дольше вычисляется, чем другая).</div></div>Судя по тому, что я нашел в интернетах, Haskell не запрещает реализации вычисляющие операнды в любом порядке.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846791'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T09:31:09+00:00">25.04.21, 09:31</time></span><div class='quote '>И вот ты снова путаешь синтаксис и семантику.</div></div>То что do-нотация является сахаром к монаде - это не семантика, это детали реализации. Семантика же заключается в последовательном выполнении. И do-нотация, кмк, отходит от ФП в сторону ИП.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846791'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T09:31:09+00:00">25.04.21, 09:31</time></span><div class='quote '>foo вычислится гарантировано до вызова bar при аппликативном порядке вычислений (а это все неленивые ФП языки, F#, Ocaml, Clojure и т.д.)</div></div>Это опять же деталь реализации. Мы же не о конкретном языке говорим. ФП подразумевает нестрогую модель вычислений: порядок выполнения функций неважен.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846791'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T09:31:09+00:00">25.04.21, 09:31</time></span><div class='quote '>может вычислиться в другом порядке при нормальном порядке вычислений или просто отложенных вычислениях, например, в Си/Паскале foo может вернуть какой-то объект Promise.</div></div>Пример с Promise неудачен, функция foo-то все равно выполнена до начала выполнения функции bar. Что касается нормального порядка вычислений, то это опять же деталь реализации. Компилятор может сделать редукцию, свертку констант и так далее, а может и не сделать. Результат <em class='tag-i'>гарантированно</em> будет таким же как и при реально последовательном выполнении, иначе это неправильный компилятор.<br>
В общем, ты везде ссылаешься на конкретные реализации, причем разные в разных ФП-языках.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846791</guid>
        <pubDate>Sun, 25 Apr 2021 09:31:09 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846791</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '>Ты ошибаешься, возможно путаешь иммутабельность и возможность объявлять константы. const в том же Си появилась, внезапно, в C89, благодаря тому самому Страуструпу, который добавил его сначала в свой Си с классами. Я помню времена, когда строковые литералы в сяшке имели тип char*. В школьном бейсике вообще не было никаких константных переменных.</div></div><br>
Нет, не ошибаюсь. Но раз ты не понял, о чём я, то подскажу: opaque struct + функции чтения.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '>Вообще-то нет.</div></div><br>
Вообще-то да.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '>Этож одна из фишек этого вашего ФП, типа смотрите, компилятор может все нафиг распараллелить.</div></div><br>
Параллельность к этому примеру вообще не в тему.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '>В ФП можно раздербанить список на элементы и запустить кучу потоков, которые будут параллельно выполнять сравнение. При этом твой код никак не изменится.</div></div><br>
В моём примере нет списка.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '><div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = foo(x)</div><div class="code_line">bar(a)</div></ol></div></div></div></div><br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bar(foo(x))</div></ol></div></div></div></div><br>
<br>
На первый взгляд кажется, что разницы нет, но на самом деле есть. В императивном варианте функция foo будет выполнена до начала выполнения функции bar. В функциональной же версии foo может быть выполнена уже после начала выполнения bar (например в середине или даже паралелльно), да и вообще пофиг когда она выполнится. Мысли абстрактней, в ФП композиция функций - это просто новая функция, а не последовательность вызовов функций.</div></div><br>
<br>
И вот ты снова путаешь синтаксис и семантику.<br>
Чисто функциональный код на Хаскелле:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">do</div><div class="code_line">&nbsp;&nbsp;a &#60;- foo x</div><div class="code_line">&nbsp;&nbsp;bar a</div></ol></div></div></div></div><br>
do-нотация является ни чем иным, как синтаксическим сахаром для монадной функции bind (оператор &#39;&gt;&gt;=&#39; и &#39;&gt;&gt;&#39; ):<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">foo x &#62;&#62;= \a -&#62; bar a</div></ol></div></div></div></div><br>
который в свою очередь является просто композицией функций, определённой в используемой монаде:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">(\a -&#62; bar a) (unwrap (foo x))</div></ol></div></div></div></div><br>
<br>
При этом<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bar(foo(x))</div></ol></div></div></div></div><br>
foo вычислится гарантировано до вызова bar при <em class='tag-i'>аппликативном порядке вычислений</em> (а это все неленивые ФП языки, F#, Ocaml, Clojure и т.д.)<br>
<br>
а<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = foo(x)</div><div class="code_line">bar(a)</div></ol></div></div></div></div><br>
может вычислиться в другом порядке при <em class='tag-i'>нормальном порядке вычислений</em> или просто отложенных вычислениях, например, в Си/Паскале foo может вернуть какой-то объект Promise.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846787'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-25T08:23:08+00:00">25.04.21, 08:23</time></span><div class='quote '>Да не, там отличные, на мой взгляд, статейки. Там прекрасно описаны достоинства и недостатки связных списков в том числе по сравнению с массивам. И вообще, рассмотрена туева хуча всяких видов списков, включая xor и unrolled варианты, на доступном английском языке с картинками. Даже дебил осилит. Инфа представленная там никак не противоречит твоим бенчам, скорее наоборот, объясняет почему так может происходить.</div></div><br>
Значит, sergioK и вправду джун, раз не понимает даже статей, на которые сам ссылается. )]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846787</guid>
        <pubDate>Sun, 25 Apr 2021 08:23:08 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846787</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846742'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T09:17:02+00:00">24.04.21, 09:17</time></span><div class='quote '>а свои джуновские статейки лучше забудь.</div></div>Да не, там отличные, на мой взгляд, статейки. Там прекрасно описаны достоинства и недостатки связных списков в том числе по сравнению с массивам. И вообще, рассмотрена туева хуча всяких видов списков, включая xor и unrolled варианты, на доступном английском языке с картинками. Даже дебил осилит. Инфа представленная там никак не противоречит твоим бенчам, скорее наоборот, объясняет почему так может происходить.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846777</guid>
        <pubDate>Sun, 25 Apr 2021 01:58:36 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846777</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846765'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T18:01:17+00:00">24.04.21, 18:01</time></span><div class='quote '>Отсюда делаю. вывод: &quot;конвенционально принятое&quot; определение ИП устарело.</div></div><br>
Я бы сделал другой вывод. Применение термина ИП к практике современного программирования потеряло актуальность. Ну и подходов-то не два ;) Да и в чистом виде мало кто применяет только какой-то один.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846765</guid>
        <pubDate>Sat, 24 Apr 2021 18:01:17 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846765</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846728'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T16:47:33+00:00">23.04.21, 16:47</time></span><div class='quote '>Так я к тому, что не ответ </div></div>Ну какой был вопрос такой и ответ. Я не знаю чего ты ожидал.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846728'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T16:47:33+00:00">23.04.21, 16:47</time></span><div class='quote '>Аргументации чего? Ты выкинул из конвенционально принятого определения ИП половину, а аргументы какие-то должен приводить я? </div></div>Скажем так. Спор сводится фактически к одному моему утверждению: <em class='tag-i'>Можно ли писать императивно не используя мутабельных переменных?</em>.<br>
Причем не синтетические примеры, а реальный полезный код.<br>
Можно, конечно скатываться в терминологическую демагогию, как это делаешь ты: ну типа раз в определении ИП написано &quot;мутабельный&quot;, значит ответ очевиден: низзя. А на остальное насрать. В таком случае можешь просто не участвовать в данном споре, потому что мне интересна оправданность необходимости мутабельности в ИП. Действительно ли иммутабельность кардинально меняет парадигму и код, внезапно, превращается в функциональный?<br>
Рассуждения о пользе этого спора вообще смехотворны, мы тут не поиском истины занимаемся, а делимся мыслями и точками зрения. Ведь вне зависимости от того согласитесь ли вы со мной или нет, ничего не поменяется вообще :)<br>
Беседа, по-сути, философская. Хотя некоторые аспекты диалога с korvin, уже ближе к реальности.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846728'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T16:47:33+00:00">23.04.21, 16:47</time></span><div class='quote '>Смотри, это зависит от определения императивности. Ты же пытаешься наоборот , из примера вывести определение. Или я тебя не понимаю.</div></div>Я рассуждаю так. Вот код, в нем есть последовательность инструкций, но нет мутабельности. Получается, что код не подходит под &quot;конвенционально принятое&quot; определение ФП (не должно быть последовательности инструкций). И не подходит под &quot;конвенционально принятое&quot; определение ИП (должна быть мутабельность).<br>
Подумав я решил, что иммутабельность в ФП - это не какая-то самоцель, а следствие из самой сущности ФП. Нет необходимости где-то держать промежуточные результаты, потому что их попросту не существует, а что тогда мутировать? Получается, что иммутабельность не должна входить в определение ФП вообще, она автоматически следует из отсутствия промежуточных результатов.<br>
Далее, рассматривая ИП, я пришел к выводу, что промежуточные результаты совсем не обязательно должны быть мутабельными. Что мешает на очередном шаге создавать новую иммутабельную переменную, вместо мутации старой? Ничего не мешает, более того, я постоянно так делаю, и при этом код не превращается в функциональный, так как последовательность иструкций никуда не девается. Получается, что обязательность мутабельности как бы &quot;искусственно&quot; прицеплена к определению, без каких либо логических причин. А как же эта мутабельность вообще попала в определение ИП? Ведь вряд ли кто-то действительно беспричинно ее туда запихал. Но это можно объяснить просто историей императивного программирования.<br>
Отсюда делаю. вывод: &quot;конвенционально принятое&quot; определение ИП устарело. Ключевое - это последовательность инструкций. А, если подняться еще выше по уровню абстракции, то ИП тесно связано с течением времени. Время - это не просто очередная координата пространства, а фундаментальная особая составляющая ИП. В отличие от ФП.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846734'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T22:47:42+00:00">23.04.21, 22:47</time></span><div class='quote '>А если б у бабушки...</div></div>Ну так не выводи в консоль, а просто возвращай результат и получится чистое ФП. Не понимаю, что ты хотел сказать этим примером.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846734'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T22:47:42+00:00">23.04.21, 22:47</time></span><div class='quote '>Так как бы языки перестают быть &quot;монопарадигмальными&quot;. А популярные языки никогда такими и не были. Иммутабельность была в Си, Паскале и практически любом другом языке с самого начала, не понимаю, что эта твоя фраза должна означать.</div></div>Ты ошибаешься, возможно путаешь иммутабельность и возможность объявлять константы. const в том же Си появилась, внезапно, в C89, благодаря тому самому Страуструпу, который добавил его сначала в свой Си с классами. Я помню времена, когда строковые литералы в сяшке имели тип char*. В школьном бейсике вообще не было никаких константных переменных. В php нормальной иммутабельности не было ни в 4-ой, ни в 5-ой версии, сейчсас не знаю. В JS const появился в ES6. Интересно, что даже сейчас const ни в C, ни в C++, ни в JS не является полноценной поддержкой иммутабельности, так как const не гарантирует иммутабельность (в отличие от immutable в D). Короче, о иммутабельности в прикладном программировании серъезно начали задумываться сравнительно недавно. ФП, конечно, возникло давно, но оно едва-едва начало выползать из академических кругов.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846734'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T22:47:42+00:00">23.04.21, 22:47</time></span><div class='quote '>Есть и она точно такая же: очередной элемент будет проверен после предыдущего.</div></div>Вообще-то нет. Этож одна из фишек этого вашего ФП, типа смотрите, компилятор может все нафиг распараллелить. Представь, что операция сравнения очень тяжелая. В ФП можно раздербанить список на элементы и запустить кучу потоков, которые будут параллельно выполнять сравнение. При этом твой код никак не изменится.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846734'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T22:47:42+00:00">23.04.21, 22:47</time></span><div class='quote '>Присутствует: нельзя вычислить значение функции, не вычислив её аргумента.</div></div>Нет не присутствует. Сравни императивную версию:<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">a = foo(x)</div><div class="code_line">bar(a)</div></ol></div></div></div></div><br>
с функциональной<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bar(foo(x))</div></ol></div></div></div></div><br>
На первый взгляд кажется, что разницы нет, но на самом деле есть. В императивном варианте функция foo будет выполнена <em class='tag-i'>до начала выполнения функции bar</em>. В функциональной же версии foo может быть выполнена уже после начала выполнения bar (например в середине или даже паралелльно), да и вообще пофиг когда она выполнится. Мысли абстрактней, в ФП композиция функций - это просто новая функция, а не последовательность вызовов функций.<br>
В реальности, конечно, последовательность будет, потому что исполнитель любой ФП-программы императивен и любая задача все равно так или иначе будет разбитна на шаги компилятором/интерпретатором. Этот эффект используется в Haskell, там, где нужна императивность, например в некоторых монадах. Но это не относится к самой <em class='tag-i'>парадигме ФП</em>, это несовершенство реализации.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846742</guid>
        <pubDate>Sat, 24 Apr 2021 09:17:02 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846742</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846738'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T03:18:28+00:00">24.04.21, 03:18</time></span><div class='quote '>Ты применяешь std_list не по месту</div></div><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846593'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-21T05:08:00+00:00">21.04.21, 05:08</time></span><div class='quote '>А LinkedList нужен когда ды ты считываешь данные неопередельной длины, особенно большие обьемы,</div></div><br>
:facepalm:<br>
<br>
а свои джуновские статейки лучше забудь.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846738</guid>
        <pubDate>Sat, 24 Apr 2021 03:18:28 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846738</link>
        <description><![CDATA[sergioK: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846736'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-24T01:41:32+00:00">24.04.21, 01:41</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846642'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T04:10:53+00:00">22.04.21, 04:10</time></span><div class='quote '>хватит тут теории разводить,с умным видом, JVM тут ыообще не причем, он и в STL есть, </div></div><br>
И вот это поизучай:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">❯❯❯ g++ -O2 -std=c++17 -o lists main.cpp</div><div class="code_line">&nbsp;</div><div class="code_line">❯❯❯ time ./lists 100000000 stdlist</div><div class="code_line">Result: 3749999975000000</div><div class="code_line">./lists 100000000 stdlist &nbsp;14.97s user 0.91s system 99% cpu 15.892 total</div><div class="code_line">&nbsp;</div><div class="code_line">❯❯❯ time ./lists 100000000 stdvector</div><div class="code_line">Result: 3749999975000000</div><div class="code_line">./lists 100000000 stdvector &nbsp;0.61s user 0.42s system 99% cpu 1.040 total</div></ol></div></div></div></div><br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">src</div><div class="body"><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;list&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">void usage(std::string, std::string);</div><div class="code_line">int64_t std_list(int64_t);</div><div class="code_line">int64_t std_vector(int64_t);</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char** argv)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (argc != 3)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;usage(std::string(argv[0]), &quot;invalid arguments&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int64_t n = std::stoi(std::string(argv[1]));</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (n &#60; 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;usage(std::string(argv[0]), &quot;invalid nitems&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string type(argv[2]);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int64_t result;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (type == &quot;stdlist&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;result = std_list(n);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else if (type == &quot;stdvector&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;result = std_vector(n);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;usage(std::string(argv[0]), &quot;unsupported type&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Result: &quot; &#60;&#60; result &#60;&#60; std::endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void usage(std::string app, std::string err)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; err &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;Usage: &quot; &#60;&#60; app &#60;&#60; &quot; &#60;nitems&#62; &#60;type&#62;&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;nitems: positive integer&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;type:&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;\tstdlist&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;\tstdvector&quot; &#60;&#60; std::endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int64_t std_list(int64_t n)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::list&#60;int64_t&#62; xs;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;xs.push_back(i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xs.remove_if([n](int x) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return x &#60; n/2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;});</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int64_t sum = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto x : xs)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sum += x;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return sum;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int64_t std_vector(int64_t n)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::vector&#60;int64_t&#62; xs;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;xs.push_back(i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto filter = std::remove_if(xs.begin(), xs.end(), [n](int x) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return x &#60; n/2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;});</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xs.erase(filter, xs.end());</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int64_t sum = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto x : xs)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sum += x;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return sum;</div><div class="code_line">}</div></ol></div></div></div></div><br>
</div></div><br>
<br>
Так что там с загрузкой неизвестного большого количества данных в linked list?</div></div><br>
Ты применяешь std_list не по месту, <a class='tag-url' href='https://www.geeksforgeeks.org/advantages-and-disadvantages-of-linked-list/' target='_blank'>https://www.geeksforgeeks.org/advantages-an...of-linked-list/</a> <br>
больше я бесплатно обьяснять не буду ,]]></description>
        <author>sergioK</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846736</guid>
        <pubDate>Sat, 24 Apr 2021 01:41:32 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846736</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846642'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T04:10:53+00:00">22.04.21, 04:10</time></span><div class='quote '>хватит тут теории разводить,с умным видом, JVM тут ыообще не причем, он и в STL есть, </div></div><br>
И вот это поизучай:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">❯❯❯ g++ -O2 -std=c++17 -o lists main.cpp</div><div class="code_line">&nbsp;</div><div class="code_line">❯❯❯ time ./lists 100000000 stdlist</div><div class="code_line">Result: 3749999975000000</div><div class="code_line">./lists 100000000 stdlist &nbsp;14.97s user 0.91s system 99% cpu 15.892 total</div><div class="code_line">&nbsp;</div><div class="code_line">❯❯❯ time ./lists 100000000 stdvector</div><div class="code_line">Result: 3749999975000000</div><div class="code_line">./lists 100000000 stdvector &nbsp;0.61s user 0.42s system 99% cpu 1.040 total</div></ol></div></div></div></div><br>
<br>
<div class="tag-spoiler spoiler closed"><div class="spoiler_header" onclick="openCloseParent(this)">src</div><div class="body"><br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">#include &#60;iostream&#62;</div><div class="code_line">#include &#60;list&#62;</div><div class="code_line">#include &#60;string&#62;</div><div class="code_line">#include &#60;vector&#62;</div><div class="code_line">&nbsp;</div><div class="code_line">void usage(std::string, std::string);</div><div class="code_line">int64_t std_list(int64_t);</div><div class="code_line">int64_t std_vector(int64_t);</div><div class="code_line">&nbsp;</div><div class="code_line">int main(int argc, char** argv)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (argc != 3)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;usage(std::string(argv[0]), &quot;invalid arguments&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 1;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;const int64_t n = std::stoi(std::string(argv[1]));</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (n &#60; 1)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;usage(std::string(argv[0]), &quot;invalid nitems&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::string type(argv[2]);</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int64_t result;</div><div class="code_line">&nbsp;&nbsp; &nbsp;if (type == &quot;stdlist&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;result = std_list(n);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else if (type == &quot;stdvector&quot;)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;result = std_vector(n);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;&nbsp; &nbsp;else</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;usage(std::string(argv[0]), &quot;unsupported type&quot;);</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return 3;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cout &#60;&#60; &quot;Result: &quot; &#60;&#60; result &#60;&#60; std::endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">void usage(std::string app, std::string err)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; err &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;Usage: &quot; &#60;&#60; app &#60;&#60; &quot; &#60;nitems&#62; &#60;type&#62;&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;nitems: positive integer&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;type:&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;\tstdlist&quot; &#60;&#60; std::endl;</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::cerr &#60;&#60; &quot;\tstdvector&quot; &#60;&#60; std::endl;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int64_t std_list(int64_t n)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::list&#60;int64_t&#62; xs;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;xs.push_back(i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xs.remove_if([n](int x) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return x &#60; n/2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;});</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int64_t sum = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto x : xs)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sum += x;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return sum;</div><div class="code_line">}</div><div class="code_line">&nbsp;</div><div class="code_line">int64_t std_vector(int64_t n)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;std::vector&#60;int64_t&#62; xs;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto i = 0; i &#60; n; ++i)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;xs.push_back(i);</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;auto filter = std::remove_if(xs.begin(), xs.end(), [n](int x) {</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;return x &#60; n/2;</div><div class="code_line">&nbsp;&nbsp; &nbsp;});</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;xs.erase(filter, xs.end());</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;int64_t sum = 0;</div><div class="code_line">&nbsp;&nbsp; &nbsp;for (auto x : xs)</div><div class="code_line">&nbsp;&nbsp; &nbsp;{</div><div class="code_line">&nbsp;&nbsp; &nbsp; &nbsp; &nbsp;sum += x;</div><div class="code_line">&nbsp;&nbsp; &nbsp;}</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;return sum;</div><div class="code_line">}</div></ol></div></div></div></div><br>
</div></div><br>
<br>
Так что там с загрузкой неизвестного большого количества данных в linked list?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846735</guid>
        <pubDate>Sat, 24 Apr 2021 00:29:07 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846735</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846701'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T06:13:50+00:00">23.04.21, 06:13</time></span><div class='quote '>изучай</div></div><br>
Ты лучше вот это поизучай:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Benchmark &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;(itemMapperType) &nbsp;(itemsToAdd) &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; (type) &nbsp;Mode &nbsp;Cnt &nbsp; &nbsp; &nbsp;Score &nbsp; &nbsp; Error &nbsp;Units</div><div class="code_line">&nbsp;</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; ascending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LinkedList &nbsp;avgt &nbsp; 30 &nbsp; 2220.032 ± 406.027 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; ascending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; ArrayList.Sort &nbsp;avgt &nbsp; 30 &nbsp; 1376.964 ± 263.260 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; ascending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp;IntrusiveLinkedList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;903.436 ± 189.932 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; ascending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; IntArrayList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;410.626 ± 101.004 &nbsp;us/op</div><div class="code_line">&nbsp;</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp;descending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LinkedList &nbsp;avgt &nbsp; 30 &nbsp; 1969.813 ± 341.063 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp;descending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; ArrayList.Sort &nbsp;avgt &nbsp; 30 &nbsp; 1323.195 ± 235.250 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp;descending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp;IntrusiveLinkedList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;858.479 ± 178.213 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp;descending &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; IntArrayList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;557.475 ± 110.512 &nbsp;us/op</div><div class="code_line">&nbsp;</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; asc-&#62;desc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LinkedList &nbsp;avgt &nbsp; 30 &nbsp; 2206.215 ± 343.007 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; asc-&#62;desc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; ArrayList.Sort &nbsp;avgt &nbsp; 30 &nbsp; 1747.033 ± 267.812 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; asc-&#62;desc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp;IntrusiveLinkedList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;850.826 ± 189.609 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; asc-&#62;desc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; IntArrayList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;776.621 ± 159.228 &nbsp;us/op</div><div class="code_line">&nbsp;</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; desc-&#62;asc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; LinkedList &nbsp;avgt &nbsp; 30 &nbsp; 1929.114 ± 346.647 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; desc-&#62;asc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; ArrayList.Sort &nbsp;avgt &nbsp; 30 &nbsp; 1311.586 ± 286.175 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; desc-&#62;asc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp;IntrusiveLinkedList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;712.091 ± 151.001 &nbsp;us/op</div><div class="code_line">CollectionsBenchmark2.addMany &nbsp; &nbsp; &nbsp; &nbsp; desc-&#62;asc &nbsp; &nbsp; &nbsp; &nbsp;100000 &nbsp; &nbsp; &nbsp; &nbsp; IntArrayList &nbsp;avgt &nbsp; 30 &nbsp; &nbsp;590.441 ± 125.438 &nbsp;us/op</div></ol></div></div></div></div><br>
<br>
IntArrayList — com.carrotsearch.hppc.IntArrayList — в четыре раза лучше LinkedList&#39;а.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846734</guid>
        <pubDate>Fri, 23 Apr 2021 22:47:42 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846734</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846701'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T06:13:50+00:00">23.04.21, 06:13</time></span><div class='quote '>Ты не хами для начала</div></div><br>
Где ты хамство увидел? Может, вот тут:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846642'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T04:10:53+00:00">22.04.21, 04:10</time></span><div class='quote '>хватит тут теории разводить,с умным видом</div></div><br>
?<br>
или тут:<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846642'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T04:10:53+00:00">22.04.21, 04:10</time></span><div class='quote '>1) Ты сам реализуешь так как тебе нужно, теоретик млин</div></div><br>
?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846701'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T06:13:50+00:00">23.04.21, 06:13</time></span><div class='quote '>Это если не надо память реалацировать</div></div><br>
В бэнчмарке ArrayDeque инициализируется дефолтным capacity и память реалоцируется.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846701'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T06:13:50+00:00">23.04.21, 06:13</time></span><div class='quote '>и машина мощная ,</div></div><br>
Мощная --- это какая?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846701'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T06:13:50+00:00">23.04.21, 06:13</time></span><div class='quote '>на размер обьекта + 24байта<br>
изучай</div></div><br>
Что там изучать? Так ты миллиард объектов уже загрузил в LinkedList?<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846707'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:57:38+00:00">23.04.21, 07:57</time></span><div class='quote '>Так что я бы на твоем месте перестал аппелировать к авторитетам, и к Страуструпу в частности.</div></div><br>
Никакой аппеляции к аргументам. Сразу видно, кто посмотрел видео, послушал, а кто --- только прочитал заголовок и имя докладчика.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846706'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:49:45+00:00">23.04.21, 07:49</time></span><div class='quote '>Если забить на грязность main, то да: вполне себе ФП.</div></div><br>
А если б у бабушки...<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846706'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:49:45+00:00">23.04.21, 07:49</time></span><div class='quote '>Иммутабельность уже давно успешно живет в языках с поддержкой императивности. В некоторых иммутабельность вообще сделана по умолчанию.</div></div><br>
Так как бы языки перестают быть &quot;монопарадигмальными&quot;. А популярные языки никогда такими и не были. Иммутабельность была в Си, Паскале и практически любом другом языке с самого начала, не понимаю, что эта твоя фраза должна означать.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846706'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:49:45+00:00">23.04.21, 07:49</time></span><div class='quote '>Тем, что в первом случае явно прописана последовательность действий. Очередной элемент будет проверен после предыдущего, и как только элемент будет найден последующие элементы не будут проверяться.<br>
А в хаскельном примере никакой последовательности действий нет.</div></div><br>
Есть и она точно такая же: очередной элемент будет проверен после предыдущего.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846706'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:49:45+00:00">23.04.21, 07:49</time></span><div class='quote '>Порядок действий никак не прописан в этом примере и не имеет никакого значения.</div></div><br>
Прописан, через ||, и имеет значение. Ровно такое же, причём.<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846706'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:49:45+00:00">23.04.21, 07:49</time></span><div class='quote '>В ФП порядок действий как таковой отсутствует.</div></div><br>
Присутствует: нельзя вычислить значение функции, не вычислив её аргумента. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-23T23:18:34+00:00">23.04.21, 23:18</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846707'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:57:38+00:00">23.04.21, 07:57</time></span><div class='quote '>Так что я бы на твоем месте перестал аппелировать к авторитетам, и к Страуструпу в частности.</div></div><br>
Кроме того, дело же не в авторитетах, про Бьорна известно, что он сделал, можно найти его публикации, выступления, да даже, наверное, код на гихабе и оценить уровень его компетентности (это, конечно, не значит, что он не может ошибаться, но всё же).<br>
<br>
Про sergioK известно лишь то, что он часто несёт чушь, не умеет читать документацию, не может самостоятельно разобраться с <a class='tag-url' href='https://forum.vingrad.ru/forum/topic-395899/kw-rest-path.html' target='_blank'>REST</a>, <a class='tag-url' href='https://forum.vingrad.ru/forum/topic-396000/anchor-entry2690701/0.html' target='_blank'>Hibernate</a> и <a class='tag-url' href='https://forum.vingrad.ru/forum/topic-395983/anchor-entry2690564/0.html' target='_blank'>IDEA</a>, высказывает утверждения уровня студента начальных курсов университета, но при этом мнит себя крутым специалистом.<br>
<br>
Даже <a class='tag-url' href='https://www.youtube.com/watch?v=bXsKnUGndEU' target='_blank'>рандомный чел на ютубе</a>, без какой-либо авторитетности, вызывает больше доверия к своим словам наличием хоть какого-то им подтверждения.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846728</guid>
        <pubDate>Fri, 23 Apr 2021 16:47:33 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846728</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846711'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T09:12:05+00:00">23.04.21, 09:12</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>Так смысл-то какой в таком определении ИП?</div></div>Это не определение ИП, это ответ на твой бесмыссленный вопрос о смысле. :)</div></div><br>
Так я к тому, что не ответ ;) <br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>а приступишь непосредственно к аргументации? :)</div></div><br>
Аргументации чего? Ты выкинул из конвенционально принятого определения ИП половину, а аргументы какие-то должен приводить я? :) <br>
Определения любые можно давать. Вопрос лишь в их пользе.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>ФП тоже получается, по-твоему, бесполезно?</div></div><br>
В ФП используется модель вычисления функций, в ИП - выполнение инструкций, читающих/модифицирующих память. Если инструкции этого не делают, то они бесполезны.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>Проблема в том, что это не имеет значения для данного кода.</div></div>Это имеет значение для парадигмы</div></div><br>
Так в том и дело, что по коду твоему парадигму строго определить нельзя. В общепринятой терминологии.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Может ты считаешь что мой пример на D и корвиновский на Haskell написаны в одной и той же парадигме (ФП или ИП)?</div></div><br>
Мне кажется, что их можно так интерпретировать.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Что мой пример не императивен?</div></div><br>
Смотри, это зависит от определения императивности. Ты же пытаешься наоборот , из примера вывести определение. Или я тебя не понимаю.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>ты пытаешься смешать парадигмы, программы и исполнителей этих программ</div></div><br>
Не думаю, что это так.<br>
<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Я же как раз таки пытаюсь абстрагироваться от всего, кроме непосредственно парадигмы.</div></div><br>
По-моему ты просто дал своё определение ИП. А я не могу понять для чего :) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-23T16:57:47+00:00">23.04.21, 16:57</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846711'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T09:12:05+00:00">23.04.21, 09:12</time></span><div class='quote '><div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>Проблема в том, что это не имеет значения для данного кода.</div></div>Это имеет значение для парадигмы.</div></div><br>
Для парадигмы имеет. Поэтому если там будет зависимость от порядка (выполнения, а не вычисления), то это будет ИП.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846726</guid>
        <pubDate>Fri, 23 Apr 2021 15:01:18 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846726</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846721'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T13:25:47+00:00">23.04.21, 13:25</time></span><div class='quote '>Кстати, а какие? Мне известны лишь обратные примеры.</div></div>Возможно ошибаюсь, но вроде именно он зарубил нормальный static if.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846722</guid>
        <pubDate>Fri, 23 Apr 2021 13:28:53 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846722</link>
        <description><![CDATA[kopilov: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846721'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T13:25:47+00:00">23.04.21, 13:25</time></span><div class='quote '>И на этом говне работает всё ныне используемое.  :lool: </div></div><br>
Просто оно перешло стадию компоста и приближается к стадии чернозёма ;)]]></description>
        <author>kopilov</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846721</guid>
        <pubDate>Fri, 23 Apr 2021 13:25:47 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846721</link>
        <description><![CDATA[Qraizer: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846707'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:57:38+00:00">23.04.21, 07:57</time></span><div class='quote '>При всем уважении, Страуструп придумал такое говно как С++.</div></div>И на этом говне работает всё ныне используемое. :lool: Не исключая Эликсиров, ДжаваМашин, ВебКитов, Андроидов и даже, о ужас, инди и триплА игр. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-23T13:26:37+00:00">23.04.21, 13:26</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846707'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:57:38+00:00">23.04.21, 07:57</time></span><div class='quote '>А в комитете выступает как тормоз прогресса, блокируя современные тенденции ЯП.</div></div>Кстати, а какие? Мне известны лишь обратные примеры.]]></description>
        <author>Qraizer</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846711</guid>
        <pubDate>Fri, 23 Apr 2021 09:12:05 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846711</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>Так смысл-то какой в таком определении ИП?</div></div>Это не определение ИП, это ответ на твой бесмыссленный вопрос о смысле. :)<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>И что? Ты опять пытаешь языки и парадигмы?</div></div>Что &quot;и что?&quot;? Это ответ на &quot;это просто функция&quot;. Как то, что &quot;это просто функция&quot; опровергает сказаное мной? Вся программа может быть просто функцией, что дальше-то? Может ты уже перестанешь вешать ярлыки, а приступишь непосредственно к аргументации? :)<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>Ну это ты молодец. Но это ничего не говорит о верности твоей демаркации.</div></div>Это был не аргумент в пользу демаркации, это было опровержение. Ты сделал предположение, что я скачусь к ФП если буду писать без мутабельности. Я опровергаю твое предположение примером выше и своей собственной практикой.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>Вообще строго говоря это бесполезно. Если твои инструкции не меняют память и не имеют побочных эффектов, то каким образом происходят вычисления и передаются результаты?</div></div> :facepalm: ФП тоже получается, по-твоему, бесполезно? Ты явно путаешь инструкции с исполнителем этих инструкций.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>Проблема в том, что это не имеет значения для данного кода.</div></div>Это имеет значение для парадигмы. И после этого ты меня обвиняешь в путании. :lol: Может ты считаешь что мой пример на D и корвиновский на Haskell написаны в одной и той же парадигме (ФП или ИП)?<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>И если ты считаешь это последовательностью инструкций, а не абстрагируешься от этого, тогда тебе придется считать, что return занимается модификацией памяти для результата своего выполнения, например.</div></div> :facepalm: Что ты хочешь этим сказать? Что мой пример не императивен? Или может он бесполезен? Или может он имеет мутабельный стейт? Ты вроде на все три вопроса отвечаешь отрицательно, но продолжаешь с чем-то спорить. Давай уже аргументы, а не просто мутную демагогию.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846708'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T08:39:14+00:00">23.04.21, 08:39</time></span><div class='quote '>В общем, мне кажется, что ты путаешь языки и парадигмы, подходы и реализации.</div></div>Тебе явно кажется. Все строго наоборот, ты пытаешься смешать парадигмы, программы и исполнителей этих программ. Я же как раз таки пытаюсь абстрагироваться от всего, кроме непосредственно парадигмы.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846708</guid>
        <pubDate>Fri, 23 Apr 2021 08:39:14 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846708</link>
        <description><![CDATA[D_KEY: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846706'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:49:45+00:00">23.04.21, 07:49</time></span><div class='quote '>Такой же как и в ФП: получение результата.</div></div><br>
Так смысл-то какой в таком определении ИП?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Программа на C/С++/D это тоже просто функция. Она даже может быть чистой, просто возвращая int в качестве результата.<br>
</div></div><br>
И что? Ты опять пытаешь языки и парадигмы?<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>Я обычно пишу в гибридном стиле и избегаю ненужной мутабельности</div></div><br>
Ну это ты молодец. Но это ничего не говорит о верности твоей демаркации.<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '>В моих программах часто встречаются императивные куски без мутабельности.</div></div><br>
Вообще строго говоря это бесполезно. Если твои инструкции не меняют память и не имеют побочных эффектов, то каким образом происходят вычисления и передаются результаты? <br>
:) <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-23T08:43:18+00:00">23.04.21, 08:43</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846706'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>applegame &#064; <time class="tag-quote__quoted-time" datetime="2021-04-23T07:49:45+00:00">23.04.21, 07:49</time></span><div class='quote '>Тем, что в первом случае явно прописана последовательность действий. Очередной элемент будет проверен <em class='tag-i'>после</em> предыдущего, и как только элемент будет найден последующие элементы не будут проверяться.</div></div><br>
Проблема в том, что это не имеет значения для данного кода. И если ты считаешь это последовательностью инструкций, а не абстрагируешься от этого, тогда тебе придется считать, что return занимается модификацией памяти для результата своего выполнения, например. В общем, мне кажется, что ты путаешь языки и парадигмы, подходы и реализации.]]></description>
        <author>D_KEY</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846707</guid>
        <pubDate>Fri, 23 Apr 2021 07:57:38 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846707</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846693'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T22:39:05+00:00">22.04.21, 22:39</time></span><div class='quote '>Бьорн Страуструп — «выксперт из интернета, теоретик»? Хаха</div></div>При всем уважении, Страуструп придумал такое говно как С++. А в комитете выступает как тормоз прогресса, блокируя современные тенденции ЯП. Так что я бы на твоем месте перестал <a class='tag-url' href='https://ru.wikipedia.org/wiki/%D0%90%D0%BF%D0%B5%D0%BB%D0%BB%D1%8F%D1%86%D0%B8%D1%8F_%D0%BA_%D0%B0%D0%B2%D1%82%D0%BE%D1%80%D0%B8%D1%82%D0%B5%D1%82%D1%83' target='_blank'>аппелировать к авторитетам</a>, и к Страуструпу в частности. По крайней мере в области программирования, где утверждения можно относительно легко проверить и доказать.<br>
Это, конечно, никак не отменяет того, что Сирожа несет ересь и отрицает очевидное.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846706</guid>
        <pubDate>Fri, 23 Apr 2021 07:49:45 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846706</link>
        <description><![CDATA[applegame: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846687'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:08:39+00:00">22.04.21, 21:08</time></span><div class='quote '>Это может быть как ФП, так и ИП, внезапно.</div></div>Внутри функции махровое ИП: цикл + ранний return. И никакого мутабельного состояния. Вывод: ИП без мутабельности возможно и полезно.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846687'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:08:39+00:00">22.04.21, 21:08</time></span><div class='quote '>— это композиция функций? ФП, значит?</div></div>Если забить на грязность main, то да: вполне себе ФП.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846687'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:08:39+00:00">22.04.21, 21:08</time></span><div class='quote '>Это общепринятое определение.</div></div>Ага, настолько же общепринятое как определение ООП с тремя китами. По мне так это определение императивности безнадежно устарело. Иммутабельность уже давно успешно живет в языках с поддержкой императивности. В некоторых иммутабельность вообще сделана по умолчанию.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846688'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:30:53+00:00">22.04.21, 21:30</time></span><div class='quote '>А почему? И какой толк от последовательности инструкций, если мы убираем изменение состояния?</div></div>Такой же как и в ФП: получение результата.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846688'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:30:53+00:00">22.04.21, 21:30</time></span><div class='quote '>Но это просто функция.</div></div>И что? :lol:  Программа на C/С++/D это тоже просто функция. Она даже может быть чистой, просто возвращая int в качестве результата.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846688'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:30:53+00:00">22.04.21, 21:30</time></span><div class='quote '>Программу-то полноценную если ты начнешь писать без мутабельности, то не скатишься ли ты к функциональному стилю, по сути?</div></div>Я обычно пишу в гибридном стиле и избегаю ненужной мутабельности. В моих программах часто встречаются императивные куски без мутабельности. Elixir вообще не поддерживает мутабельность, но в нем полно императивщины.<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846690'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T22:03:43+00:00">22.04.21, 22:03</time></span><div class='quote '><strong class='tag-b'>applegame</strong>, чем это:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bool contains(T)(const T[] arr, const T e) pure {</div><div class="code_line">&nbsp;&nbsp;foreach(const x; arr) if(x == e) return true;</div><div class="code_line">&nbsp;&nbsp;return false;</div><div class="code_line">}</div></ol></div></div></div></div><br>
отличается от<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">contains [] &nbsp; &nbsp; e = False</div><div class="code_line">contains (x:xs) e = x == e || contains xs e</div></ol></div></div></div></div><br>
?</div></div>Тем, что в первом случае явно прописана последовательность действий. Очередной элемент будет проверен <em class='tag-i'>после</em> предыдущего, и как только элемент будет найден последующие элементы не будут проверяться.<br>
А в хаскельном примере никакой последовательности действий нет. Сравнение может проводиться как угодно, хоть по отдельному потоку на каждый элемент. Порядок действий никак не прописан в этом примере и не имеет никакого значения.<br>
<br>
В этом главное и единственное отличие. В ФП порядок действий как таковой отсутствует.<br>
Это хорошо иллюстрирует Excel: на листе у нас есть какие-то ячейки и формулы вычисляющие значения одних ячеек в зависимости от других. Порядок выполнения этих функций нам вообще не важен. Важно, что на входе есть данные и на выходе есть результат.<br>
<br>
Можно попытаться представить себе что функции выполняются за нулевое время, то бишь течение времени отсутствует как явление. Получится идеальный мир ФП.]]></description>
        <author>applegame</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846701</guid>
        <pubDate>Fri, 23 Apr 2021 06:13:50 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846701</link>
        <description><![CDATA[sergioK: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846695'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T23:02:21+00:00">22.04.21, 23:02</time></span><div class='quote '>LinkedList в два раза менее производительный, чем ArrayDeque в качестве очереди. :facepalm:<br>
Ты не «практик», ты — практикант. Максимум.</div></div><br>
Ты не хами для начала, Это если не надо память реалацировать, и машина мощная ,<br>
и частота входа/выхода  данные большая, <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-23T06:26:14+00:00">23.04.21, 06:26</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846634'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-21T22:21:00+00:00">21.04.21, 22:21</time></span><div class='quote '>А LinkedList умножает память на 3.</div></div><br>
на размер обьекта + 24байта <br>
<a class='tag-url' href='https://www.geeksforgeeks.org/implementing-a-linked-list-in-java-using-class/' target='_blank'>изучай </a>]]></description>
        <author>sergioK</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846695</guid>
        <pubDate>Thu, 22 Apr 2021 23:02:21 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846695</link>
        <description><![CDATA[korvin: <strong class='tag-b'>sergioK</strong>, кто тебя вообще на работу взял? Джуны, видимо<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">Benchmark &nbsp; &nbsp; &nbsp; (itemsToAdd) &nbsp; &nbsp; &nbsp;(type) &nbsp;Mode &nbsp;Cnt &nbsp; &nbsp; &nbsp;Score &nbsp; &nbsp; &nbsp;Error &nbsp;Units</div><div class="code_line">Queues.addMany &nbsp; &nbsp; &nbsp; 1000000 &nbsp;LinkedList &nbsp;avgt &nbsp; 15 &nbsp;10204.559 ± 1692.646 &nbsp;us/op</div><div class="code_line">Queues.addMany &nbsp; &nbsp; &nbsp; 1000000 &nbsp;ArrayQueue &nbsp;avgt &nbsp; 15 &nbsp; 5026.365 ± &nbsp;609.288 &nbsp;us/op</div></ol></div></div></div></div><br>
<br>
LinkedList в два раза менее производительный, чем ArrayDeque в качестве очереди. :facepalm:<br>
Ты не «практик», ты — практикант. Максимум. <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-22T23:03:13+00:00">22.04.21, 23:03</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846694'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T22:48:34+00:00">22.04.21, 22:48</time></span><div class='quote '>и сравни с вектором </div></div><br>
Нахер с этим говном сравнивать? Его никакой адекватный человек использовать не станет.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846694</guid>
        <pubDate>Thu, 22 Apr 2021 22:48:34 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846694</link>
        <description><![CDATA[sergioK: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846648'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T08:26:31+00:00">22.04.21, 08:26</time></span><div class='quote '>Чё, серьёзно?</div></div><br>
Посмотри что она делает,  и сравни с вектором <br>
<br>
<span class="tag-color tag-color-named" data-value="mergepost" style="color: mergepost"><span class='tag-size' data-value='7' style='font-size:7pt;'>Добавлено <time class="tag-mergetime" datetime="2021-04-22T22:58:48+00:00">22.04.21, 22:58</time></span></span><br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846677'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>Qraizer &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T18:44:10+00:00">22.04.21, 18:44</time></span><div class='quote '>Ты всерьёз думаешь, что лицензия поможет программисту – хотя скорее исцом будет компания, в которой программист работает, но не суть, внутренние корпоративные разборки тоже бывают по-разному оканчиваются – уйти от уголовной ответственности, если дело примет такой оборот? Сочувствую, но ты плохо себе представляешь, как работает закон и каким образом лицензии с ним взаимодействуют.</div></div><br>
Когда в постоенном доме падает балкон, созывают комисиию и инженера за прококол могут посадить ибо он <br>
подписал что все надежно, а сам прозевал, когда из-за сбоя программы столкнулись два поезда никаких комисий никто не создавал, <br>
<br>
Если програмисты будут сдавать тесты на получение лицензии, то дерьмо кода будет куда меньше, <br>
и пока какой нидь  шлемзал  сможет написать hello word и считать себя програмистом, ситуация не улучшиться.<br>
<br>
Что за ролик то про столицу IT ?]]></description>
        <author>sergioK</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846693</guid>
        <pubDate>Thu, 22 Apr 2021 22:39:05 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846693</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846692'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T22:30:50+00:00">22.04.21, 22:30</time></span><div class='quote '>Да плевал я на твой бенчмарк, и таких же выкскпертов из интернета, теоретики млин,</div></div><br>
Бьорн Страуструп — «выксперт из интернета, теоретик»? Хаха<br>
<br>
<div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846692'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>sergioK &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T22:30:50+00:00">22.04.21, 22:30</time></span><div class='quote '>queue когда в минуту приходит 15-20 тыс обьетов, массивом не сделаешь.</div></div><br>
Чё, серьёзно? )) Да ты хуже джуна. Нормальный джун хотя бы понимает, что он джун.]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846692</guid>
        <pubDate>Thu, 22 Apr 2021 22:30:50 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846692</link>
        <description><![CDATA[sergioK: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846648'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>korvin &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T08:26:31+00:00">22.04.21, 08:26</time></span><div class='quote '>Какие теории, болезный? Я тебе вон бенчмарк скинул с твоим «практическим» примером, загрузить большое, неизвестное число объектов, где по-твоему нужно LinkedList использовать, а оказалось — не нужно.</div></div><br>
Да плевал я на твой бенчмарк, и таких же выкскпертов из интернета, теоретики млин,<br>
все это 20лет назад известно,  insert и delete будет 0(1)  у массива не будет,<br>
queue когда в минуту приходит 15-20 тыс обьетов, массивом не сделаешь.]]></description>
        <author>sergioK</author>
        <category>Holy Wars</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846690</guid>
        <pubDate>Thu, 22 Apr 2021 22:03:43 +0000</pubDate>
        <title>Что делать с жунами</title>
        <link>https://forum.sources.ru/index.php?showtopic=421266&amp;view=findpost&amp;p=3846690</link>
        <description><![CDATA[korvin: <div class='tag-quote'><a class='tag-quote-link' href='https://forum.sources.ru/index.php?showtopic=421266&view=findpost&p=3846688'><span class='tag-quote-prefix'>Цитата</span></a> <span class='tag-quote__quote-info'>D_KEY &#064; <time class="tag-quote__quoted-time" datetime="2021-04-22T21:30:53+00:00">22.04.21, 21:30</time></span><div class='quote '>А почему? И какой толк от последовательности инструкций, если мы убираем изменение состояния?</div></div><br>
Присоединяюсь к вопросу.<br>
<br>
<strong class='tag-b'>applegame</strong>, чем это:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">bool contains(T)(const T[] arr, const T e) pure {</div><div class="code_line">&nbsp;&nbsp;foreach(const x; arr) if(x == e) return true;</div><div class="code_line">&nbsp;&nbsp;return false;</div><div class="code_line">}</div></ol></div></div></div></div><br>
отличается от<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">contains [] &nbsp; &nbsp; e = False</div><div class="code_line">contains (x:xs) e = x == e || contains xs e</div></ol></div></div></div></div><br>
?]]></description>
        <author>korvin</author>
        <category>Holy Wars</category>
      </item>
	
      </channel>
      </rss>
	