Я конечно не эксперт, но не подвержен ли ваш контракт проблемам с reentrancy?
Перевод эфира должен вызвать такой же обработчик по умолчанию на sender, который в ответ может передать еще эфира контракту ICO, вызвав тем самым обработчик по умолчанию...
Тренировка не работает для меня. После успешного 100% прохождения тренировки, если попадется какое-нибудь слово (особенно если оно действительно новое и/или сложное для меня) велика вероятность что я его не вспомню в «боевых условиях». Складывается впечатление что слова просто не оседают.
Решаю проблему тем, что во время тренировки сначала вспоминаю слово, а лишь затем смотрю на варианты ответов. Если вспомнил неправильно то намеренно выбираю неправильный ответ или жду таймаута.
Уважаемый poxu, я не имею ни желания ни возможности разводить холивары и повторять о том, что я уже писал выше.
Если Вы хотите понять почему же исключения не приживаются в ФП, каким таким волшебным образом код становится безопаснее и чище, да и еще от добавления каких то непонятных «дополнительных» возвращаемых типов, которых еще и руками нужно обрабатывать, то Вам придется либо самому все потрогать, либо дождаться другого собеседника.
Всегда был уверен, что сайд эффект — это когда функция делает что-то помимо возврата результата.
Все несколько сложнее.
Чистота функции это не совсем про «делать что-то помимо возврата результата». Давайте попробуем посмотреть на следующий псевдокод:
val m: Map[Int, Int]
def get(k: Int): Int {
var v = m.get(k)
if (v == null) {
v = /* pure calc */
m.put(k, v)
}
return v
}
Является ли этот метод чистым? Он ведь что-то делает помимо возврата результата.
Механизм исключений позволяет не вводить дополнительного возвращаемого типа, позволяет не вводить метод map и при этом писать понятный и простой код.
Давайте посмотрим на это с другой стороны. «Метод» map позволяет не вводить дополнительный механизм обработки исключений, при этом позволяет писать понятный и простой код, в котором можно четко сказать на каком участке кода какие исключительные ситуации могут возникнуть, обеспеченный проверку типов компилятором.
Также позволяет не писать в функциональном стиле, если тебе это не нравится и писать когда это приятно.
Мне показалось вы допускаете использование исключений в функциональном коде. По моему опыту лучше этого избегать.
Функциональный подход — другой стиль программирования, со своими плюсами и минусами, которые зачастую не сразу очевидны. В данном случае, плюсом является, на мой взгляд, является типобезопасность. Обычно это обязывает вас обрабатывать большинство краевых случаев, всегда думать о том где какие результаты будут. По факту это означает обнаружение ошибок на более ранних этапах разработки, но как минус (субъективно) более медленное написание кода. И для этого не обязательно иметь возможность объявить чистую функцию.
Если Вам действительно интересно, то, наверное, Вам стоит поближе познакомится с ФП языками и с тем как ФП применяют в императивных языках. Из меня, увы, плохой рассказчик.
Смарт контракты Ethereum: пишем простой контракт для ICO
Я конечно не эксперт, но не подвержен ли ваш контракт проблемам с reentrancy?
Перевод эфира должен вызвать такой же обработчик по умолчанию на
sender
, который в ответ может передать еще эфира контракту ICO, вызвав тем самым обработчик по умолчанию...Путь к HTTP/2
Звучит как многоходовочка.
Видео движения Tesla в режиме автопилота в городских условиях
А то распоясались
Спросите Итана №21: Почему существует жизнь?
Забудьте о DAO, используйте Repository
Repository is Dead: Long Live Repository,
Night of the living Repositories
Google, Microsoft, Mozilla и другие объединились для запуска WebAssembly, нового бинарного формата для Web
Код будет распространятся в AST, что означает декомпиляция будет очень простой.
Роскомнадзор объяснил правообладателям, как нужно применять обновлённый «антипиратский» закон
Разборка Retina Macbook 2015 от iFixit: невозможно ни отремонтировать, ни проапгрейдить
Учёные собирают деньги на изучение действия LSD
Valve анонсировали бесплатный игровой движок Source 2, а также Steam Link
В Chrome появится «Режим чтения»
В Chrome 40 появится HTTP/2, поддержка SPDY будет удалена
Финский дата-центр «Яндекса» будет обогревать 5000 домохозяйств
HTTP/2 (h2-14, spdy4) в Google Chrome 40
Интервальное повторение на LinguaLeo
Решаю проблему тем, что во время тренировки сначала вспоминаю слово, а лишь затем смотрю на варианты ответов. Если вспомнил неправильно то намеренно выбираю неправильный ответ или жду таймаута.
Gangnam Style сломал переменную количества просмотров
Роскомнадзор заблокировал 7 страниц GitHub
NetByNet.
Обработка ошибок в Swift — меч и магия
Если Вы хотите понять почему же исключения не приживаются в ФП, каким таким волшебным образом код становится безопаснее и чище, да и еще от добавления каких то непонятных «дополнительных» возвращаемых типов, которых еще и руками нужно обрабатывать, то Вам придется либо самому все потрогать, либо дождаться другого собеседника.
Обработка ошибок в Swift — меч и магия
Все несколько сложнее.
Чистота функции это не совсем про «делать что-то помимо возврата результата». Давайте попробуем посмотреть на следующий псевдокод:
Является ли этот метод чистым? Он ведь что-то делает помимо возврата результата.
Давайте посмотрим на это с другой стороны. «Метод» map позволяет не вводить дополнительный механизм обработки исключений, при этом позволяет писать понятный и простой код, в котором можно четко сказать на каком участке кода какие исключительные ситуации могут возникнуть, обеспеченный проверку типов компилятором.
Мне показалось вы допускаете использование исключений в функциональном коде. По моему опыту лучше этого избегать.
Функциональный подход — другой стиль программирования, со своими плюсами и минусами, которые зачастую не сразу очевидны. В данном случае, плюсом является, на мой взгляд, является типобезопасность. Обычно это обязывает вас обрабатывать большинство краевых случаев, всегда думать о том где какие результаты будут. По факту это означает обнаружение ошибок на более ранних этапах разработки, но как минус (субъективно) более медленное написание кода.
И для этого не обязательно иметь возможность объявить чистую функцию.
Если Вам действительно интересно, то, наверное, Вам стоит поближе познакомится с ФП языками и с тем как ФП применяют в императивных языках. Из меня, увы, плохой рассказчик.