Історичні витоки імпульсів Скали


14

Скалу називали складною з її багатою характеристикою, яку встановили багато моїх колег, а деякі навіть звинувачували в усіх цих нових можливостях. Хоча більшість програмістів знають про особливості ОО, і принаймні гідні також знають про функціональне програмування, в Scala є одна особливість, зокрема, я не знаю про її історичне походження.

З огляду на , що основна мантра нашої професії не винаходити велосипед, я досить впевнений, що Scala не має якісь - або фактичні небувалі перш , ніж функцій, але я стою бути виправлений на цьому , якщо це необхідно.

Щоб дійти до власне питання, хоча я знаю про витоки більшості особливостей Scala, я ніколи не бачив чогось подібного до її implicitдекларацій. Чи є інші (старші!) Мови там, які також надають цю функцію?

Чи має сенс розрізняти різні випадки імпліцитів (оскільки вони можуть походити з різних джерел), а саме неявні перетворення та неявні параметри?


Може бути дублікатом?: Stackoverflow.com/questions/3069432 / ...
gerferra

@gerferra Не точний дублікат, і не існує поняття дублікату веб-сайту. Якщо ви хочете, ви можете скласти відповідь, що посилається на питання ТА, і відповіді та їх посилання є цілком прийнятним.
yannis

Відповіді:


9

Я не згоден з відповіддю Брайана на це інше питання.

Наскільки я знаю, немає жодної неявної концепції щодо жодної іншої мови. Історія змін для Scala передбачає, що імпліцити були узагальненням меж зору перегляду, а сама зв'язана точка зору сама по собі є узагальненням автоматичного перетворення типу, що є дуже поширеним.

Потім імпліцити вмикали класи типів, але я був би дуже здивований, якби це був початковий намір.

Редагувати

Примітки до випуску Scala 2.0 (2006) кажуть:

Перегляди в Scala 1.0 були замінені більш загальною концепцією неявних параметрів

Це, звичайно, не означає, що неявні параметри були введені з метою заміни поглядів.

Однак Одерському явно подобається, коли колись концепція може замінити декілька. У цьому сенсі цілком може статися так, що Одерський хотів класи типів, але не хотів запровадити механізм, щоб це вирішувати виключно, і, отже, придумав щось інше, що дозволило б йому зняти одну концепцію (Погляди) та замінити її з більш загальною концепцією, яка обробляє як представлення, так і типи класів.

У разі, якщо когось цікавить, Класи бідних чоловіків, на які посилається Брайан назад у Stack Overflow, також датовані 2006 роком. Очевидно, що Одерський знав про зв'язок між імпліцитами та класами типів, коли він їх вводив.

Тим не менш, я відстоюю свою вимогу. :-)


Як щодо відповіді Нормана Рамзі? stackoverflow.com/a/3071461/63489 . Це стосується попередньої реалізації неявних перетворень у Haskell
gerferra

@gerferra Звучить розумно - зауважте, що в цьому документі згадується Одерський. Механізм інший, але він цілком може мати кульку кочення. Згаданий документ Одерського обговорює класи типів, а імпліцити були введені в 2006 році, дату презентації "Класи бідних чоловіків", яку цитував Брайан, - зрозуміло, є посилання. Все ж у примітках до випуску Scala 2.0 (2006) сказано, що "Погляди в Scala 1.0 були замінені більш загальною концепцією неявних параметрів" . З того, що мені відомо про Одерського, один механізм, який вирішує численні проблеми, мав би для нього велику привабливість.
Даніель К. Собрал

досить справедливо :-)
gerferra

4

Implicit в масштабі означає дві різні речі

  1. Неявні параметри. Вони з'явилися в Haskell, і, можливо, спочатку в інших мовах. Підтверджуючі докази: Цей документ із документації 2000 року та GHC 5.04.1 (вересень-2002, до того, як була Scala)
  2. Неявні перетворення. Я не знаю першої мови з цими мовами, але вони були в C # 1.0 (за допомогою implictключового слова), що датує першу версію Scala приблизно на рік.

+1, я не знав, що в C # доступні неявні конверсії. Дякуємо за вказівник.
Френк

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.