Pull to refresh
43
Владимир@shock_one

User

6
Subscribers
Send message
Вы уверены, что это можно назвать зависимыми типами? Ведь тип не зависит от значения, а просто содержит некие константы. Вот если бы можно было, скажем, изменить верхний лимит в процессе выполнения меняя значение, тогда да.
Да, действительно. Но если не пользоваться функциями из Num, зачем нам этот instance? Только для того, чтобы создавать значения без конструктора?
Я вам поставил минус в карму потому, что вы неуважительно относитесь к людям.
Вы ведь слышали о dependent types, правда? Они предоставляют большую гарантию: программа с неправильный диапазоном не скомпилируется.

Классический пример — функция head. В Haskell она неполная — если передать пустой список, получим runtime exception. В Idris же (который как Haskell, но с dependent types), тип этой функции можно прочитать как «список, у которого по крайней мере один элемент».
Ну да, overhead N a по сравнению c а отсутствует. Понятно, что быстрее, чем a не станет.
Надеюсь, автор меня простит за то, что я отвечу за него. Bounded arithmetic — идея достаточно общего назначения. К сожалению, в этом решении все константы должны быть известны на этапе компиляции, что сужает область применения. Но все же количество месяцев никогда не должно быть больше, чем 12, HTTP статус должен быть между 100 и 799, а количество пользователей в бесплатной версии вашего чата должно быть до десяти.
Не уверен зачем нам Num'. У меня работает и ab 14 + 7, ведь у нас есть fromInteger для RgVld.
И еще, вы пишете, что для newtype runtime overhead меньше. Разве он не отсутствует совсем?
Атрибут — это тоже метод. Attribute reader. Getter.
Часто возникает ситуация, когда в методе нужно создать объект, как-то его изменить и возвратить. Очевидной имплементация будет

def agent
  agent = Mechanize.new
  agent.user_agent = 'Mozilla'
  agent
end


С этим кодом все хорошо, но он не очень элегантный. Используя Object#tap можно превратить его в

def agent
  Mechanize.new.tap { |agent| agent.user_agent = 'Mozilla' }
end

Private не изменяет видимость методов класса. Многие считают, что метод bar в этом примере будет приватным.

class Foo
  private

  def self.bar
    puts 'bar'
  end
end

Foo.bar # => bar


Если вам нужен приватный метод класса, используйте privat_class_method или singleton class (class << self).
Мне кажется, это очень оптимистично рассчитывать на то, что можно сделать набор gem'ов достаточно гибким, чтобы удовлетворить нужны хоть сколько либо значимого количества пользователей. Возможно, лучше было бы посмотреть в сторону генерации конфигурации на основе существующего проекта, как в Maven Archetypes? maven.apache.org/guides/introduction/introduction-to-archetypes.html
Если я правильно понимаю, идея в том, чтобы сворачивать коллекции проходясь по ним только один раз. Для производительности. Я честно пытался прочитать все примеры, но до конца так и не осилил.

Ваш пример на Haskell смотрится немного странно, учитывая, что эту простыню можно заменить на обычное

foldl (*) 1 $ map (+1) [1,2,3]


Правда ли, что мы хотим добиться чего-то типа

foldl (+) 0 $ (map succ). (filter (> 2)). (map (*3)) $ [1,2,3,4]


но в форме

foldl ((succ. (> 2). (* 3)) (+)) 0 [1,2,3,4]


то есть, чтобы комбинировать некомбинируемые средствами языка «трансдюсеры»?

Если да, то я даже не знаю, это не будет быстрее, зато будет намного непонятнее. Кстати, в конкретном случае с map-t можно комбинировать с помощью function composition — точки. Правда, с предикатамы filter-t так не сработает, но они комбинируются как моноиды или с помощью list comprehension.

filter (getAll. foldMap (All.) [odd, (>7), (<100), prime])


[x | x < — xs, odd x, x > 7, x < 100, prime x]
В VIM можно для этого использовать ctags, а в PHPStorm — IdeaVIM, чтобы стало больше как VIM.
Space — вниз, shift+scape — вверх.
В IdeaVIM есть макросы.
Программ какого размера, позвольте поинтересоваться?
Он разве не должен загрузить все существующие заметки из Evernote? Только те, что я создаю непосредственно в Marxico?
Это — прекрасно. Еще бы VIM биндинги, чтобы редактировать со скоростью мысли.
Прекрасная книга, утопическая школа превозносящяя музыку и математику. Это ли не идеализм?
На мой взляд, это скрытая тактика. Он явно недоговаривает, причем делает это в своих интересах. Но у согласен, что вопрос неоднозначный, и у вас может быть иное виденье.

Information

Rating
Does not participate
Location
Тернополь, Тернопольская обл., Украина
Date of birth
Registered
Activity