All streams
Search
Write a publication
Pull to refresh
4
0.6
Send message
Трудно только первые лет пять, а потом привыкаешь! )))
В 7.3 да, inline объявления не работают. Печально, когда попадается такая система, в то время, когда космические корабли, понимаете ли, бороздят просторы Тихого Океана )).
Насчёт полиморфизма, боюсь, вы путаете его с перегрузкой функций. Перегрузка не работает ни в одной из версий SAP.
А вот полиморфизм есть везде, где доступны классы. Собственно говоря, это одно из основ ООП, без которой вводить классы не имеет смысла.
Я имел в виду, что вместо:
PERFORM values_from_tab_T001 USING 'BUKRS1' 'BUTXT1' CHANGING lt_TABLE.
PERFORM values_from_tab_T001 USING 'BUKRS2' 'BUTXT1' CHANGING lt_TABLE.


Сделать такую функцию, сигнатура которой позволит принимать вот такие параметры:
DATA lt_table TYPE TABLE OF string.
INSERT 'BUKRS1' INTO TABLE lt_table.
INSERT 'BUKRS2' INTO TABLE lt_table.
PERFORM values_from_tab_T001 USING lt_table 'BUTXT1' CHANGING lt_TABLE.

Что в 7.4 можно записать как:
data(lt_table) = VALUE #( ( 'BUKRS1' ) ( 'BUKRS2 ) ).
PERFORM values_from_tab_T001 USING lt_table 'BUTXT1' CHANGING lt_TABLE.

Что позволит не бегать кучу раз по таблице.

Что до полиморфизма, насколько знаю, везде где есть классы, полиморфизм реализуется нормально — как у всех. Вы какую версию системы имеете в виду?
В принципе, можно чуть обобщить код, вместо значения uv_in_BUKRS принимать внутреннюю таблицу со значениями. Если система 7.4, с помощью нового синтаксиса такую входную табличку создавать довольно просто.
Вообще, жаль, что в ABAP довольно громоздкий синтаксис объявления классов. По идее, можно было б изящно решить проблему классом, который принимает на вход экземпляр интерфейса, который выбирает нужные данные из таблицы (теперь таблица будет искаться через «использование») — а внутри уже лепить динамику от души )).
А зачем для вышеозначенного отдельный девайс? Сам смартфон с автоответом не управится?

Ну и «от создателя Андроид» звучит не особо интересно. Помню я каким был этот Андроид на первых устройствах. Почти такой же ужас как Скайп после покупки Майкрософтом.
Такая штука запрещена самим Google Play )). Нельзя из кода приложения поставить оценку самому себе, да и кому либо другому — тоже нельзя, надеюсь, понятно почему так.
По моему ещё не накинулись. Не увидел ни одного неадекватного комментария с критикой.
Просто, действительно выглядит пока так что автор замахнулся на задачу, для которой ещё не созрел. Однако, в любом случае это будет отличным опытом, и накидываться не нужно — так никто этого и не делает.
Edifier это компьютерная активная акустика. Тут речь немного о другой категории, как понимаю.
Хотя да, из компьютерной активной акустики они наиболее предпочтительны, на мой взгляд.
Короче, как завещал Гёдель, в реальности мы упираемся в проблему полноты и противоречивости.
Хотя, интуиция подсказывает, что в Хаскеле и с полнотой могут быть проблемы.
Сейчас, о достопочтенные граждане, я восстановлю баланс во вселенной:
Prelude> ff = id . undefined
Prelude> :t ff
ff :: a -> c

В общем, выражение (id. undefined) имеет тип «ff :: a -> c» а не «undefined» как может показаться на первый взгляд.
Так что id возвращает то что должно.
Ок. Как я уже говорил, я не волшебник а только учусь. Про функторы, аппликативные функторы и монады я более менее нормально прочитал в «Learn you a haskell for a great god» вот в этой главе.
Рассмотрим для простоты функтор.
Функтор имеет всего один метод:
fmap :: (a -> b) -> f a -> f b
— то есть, берёт функцию и параметр, обёрнутый во что либо, достаёт параметр, применяет к нему функцию и оборачивает обратно.
Также, функтор имеет два свойства:

  1. если применить fmap к функции id и функтору, то получим тоже самое значение, что получили бы просто применив id к функтору
  2. если к результату композиции двух функций применить fmap с функтором, результат будет тот же, если мы сначала применим fmap с фуктором к одной функции, затем к другой


Скажите, пожалуйста, где здесь условность?
Оба свойства чётко определены, мы можем спокойно написать функцию, которая может проверить любой объект, реализующий fmap на предмет — «а не функтор ли ты часом ?» и дать точный ответ на этот вопрос.
С MVC так не выйдет )).
Насколько понимаю, реализация действительно не регламентируется, зато чётко заданы свойства, из которых следуют различные следствия.
То есть, если объект имеет определённые чётко заданные свойства — мы можем назвать его функтором, из чего следуют всякие полезности, свойственные этим самым функторам.
У того же паттерна MVC нет чётко заданных свойств и нельзя тупо взять, проделать с двумя разными реализациями паттернов одинаковые действия и получить одинаковый результат.
Но я в этих вещах нуб, могу ошибаться.
Видимо, не одному мне приходила такая мысль ).
Думаю, такое всё таки тренируется постоянной практикой.
Ну если так то да, согласен. Вакансий таких раз два и обчёлся, плюс, знаний для написания чего то покрупнее нужно «чуть» больше чем умение пользоваться монадами.
По поводу «никто не знает, что такое каноничный MVC» вспомнился мне коллега, который пытался объяснить что его понимание паттерна — самое верное и view с контроллером обязан взаимодействовать вот так, и никак иначе!
Спасибо. «Learn you a Haskell...» освоен, частично ознакомился с «Real world Haskell».
Насчёт практической применимости не соглашусь. Уже сейчас пытаюсь использовать его как скриптовый язык для собственных маленьких потребностей.
В этом качестве нравится тем, что можно скомпилить исполняемый файл под любую десктопную платформу, и не нужно потом на целевой машине что то там устанавливать дополнительно.
Раньше пользовал для этой цели Питон, но он не нравится по вышеуказанной причине.
Ну, меня ФП как раз привлекло возможностью «посмотреть на программирование с другой стороны». Проходили их в универе, и даже немного писали на Лиспе, но тогда как то не проникся.
Сейчас приобщаюсь потихоньку и ощущения примерно те же что от книги Гради Буча, прочитанной взахлёб ещё в далёком 2003м.
Согласен, пихать pointfree куда ни попадя не очень хорошо. Во всём нужна мера )
Вот, за что я люблю Хабр, так это за комментарии. Если задать правильный вопрос, сразу получишь тонну интересного )).
Я правильно понял, что, упрощённо говоря, Idris это Хаскель скрещённый с Прологом?
Спасибо. Название действительно какое то простецкое, так бы прошёл мимо ).
СИКП это, конечно, круто но уж слишком )).

Information

Rating
1,860-th
Registered
Activity