Scala по имени в зависимости от параметров функции
Это именованный параметр:
def foo(bar: => Boolean): Boolean = bar
И это параметр функции:
def foo(bar: () => Boolean): Boolean = bar()
Чем отличаются две декларации? Оба будут оценены лениво и каждый раз, когда к параметру обращаются? Есть ли преимущество у одного синтаксиса или другого? Будет ли первое означать чистую функцию по сравнению с функцией с побочными эффектами для второго?