Как стать автором
Обновить
22
17
Андрей @IIvana

Пользователь

Отправить сообщение

А бывает и так (только что увидел и не смог не заскринить )))

Да, только в каждом проекте он разный - где-то толстый и неповоротливый, где-то старый, а где-то шустрый красивый...

Думал над этим, но когда я первый раз заявил об этом плагине миру (на одном программистском форуме и в своем Телеграм-канале с 40 участниками), мир отреагировал достаточно пассивно и не проявил интереса и энтузиазма ) Но может действительно попробую реализовать эту идею общего шаринга.

Спасибо. Да, думал и в этом направлении, просто не знал, насколько Тэйпманки меня ограничит в том, что мне потребуется (до реализации расширения я точно не знал что может потребоваться от него), поэтому выбрал вариант написать все с нуля. Теперь же я действительно могу попробовать загнать это в Тэйпманки и проверить, хватает ли там возможностей для реализации всей логики.

ЧС на скриншоте демонстрацоныый, исключительно чтобы показать вам красивые скриншоты. Разумеется, после написания статьи я восстановил реальный черный список в локал сторадже браузера

Круто, пасиб! Буду юзать! А я еще думал как мне с гитхаба куда-нибудь все продублировать, а оно вон как )

Хм. А гит-пуш / гит-пулл / гит статус и т.п. на какой сайт за каким ориждином пойдут? Или это также передается параметрами? Не использовал еще такой вариант, надо будет покурить такую возможность.

Решил побаловаться — написал лет через функцию. Только квотировать при вызове надо, как выше говорил


(defn let (l)
      (defn go (l ns es)
            cond (null? (cdr l)) (cons (cons 'lambda ns l) es)
            (go (cdr l) (cons (caar l) ns) (cons (cadr (car l)) es)))
      ((lambda (x) (print "macroexpand:" \n x \n) (eval x))
       (go l nil nil)))

(let '((a (+ 1 2 3))
       (b (* 4 5 6))
       (c (* 7 8 9))
       (+ a a b b c c)))

 => macroexpand:
((lambda (c b a) (+ a a b b c c)) (* 7 8 9) (* 4 5 6) (+ 1 2 3))
1260

Я понимаю, что есть миллион диалектов сабжа, но не верю, что среди них есть такие запущенные )


  1. Если нет макросов — напиши свой макропроцессор. Гомоиконность, как-никак. Пишешь кот, квотишь его, скармливаешь функции преобразования, получаешь другой кот, копипастишь результат куда надо.
  2. Про императивный стиль — и сейчас есть широко распространенные языки, в которых нет мутабельности от слова совсем. И ничего, живут как-то люди.
  3. Defun — это (внезапно) тоже макрос ) То есть

(defun (f a b) (+ a b))

раскрывается в


(def f (lambda (a b) (+ a b)))

  1. Про подозрения — не постиг смысл и идею что у вас там написано, но есть подозрение, что вы хотите накостылить семантику let без макросов через лямбды. Работать будет только если квотировать в месте использования конструкции каждый раз — потому что у лямбды аппликативная редукция в отличие от нормальной у макросов (по-русски, лямбда форсит вычисление своих аргументов, а макрос — нет), и результат придется еще эвалить — только не говорите, что в вашем диалекте не было eval )

let же может быть тривиально реализован как макрос — например


(let (a (+ 1 2 3)
      b (* 4 5 6))
  (foo (+ a b)))

раскроется как


((lambda (a b) (foo (+ a b))) (+ 1 2 3) (* 4 5 6))

и для этого не нужно ничего в ядре языка, макросы позволяют навернуть на базовых возможностях все что угодно. let* так же тривиально макросом реализовать, только там будет разворачиваться не в одну мультиарную лямбду, а в несколько вложенных унарных — для гарантии порядка вычисления аргументов, если он не гарантируется в колл-конвеншене вызова (как в Scheme, например).

Спасибо, понятно.

Спасибо за интерес и замечания. Не написал ввиду очевидности, но порядок элементов внутри коллекций у меня сохраняется (хотя и пока отсутствуют стрелки для его изменения). А порядок полей объекта… Он приходит в виде жсона, там уже он теряется. Хотя, если в структуре полей есть ордер, по нему можно восстановить. Про легальные extension — если они определены в StructureDefiniton — я их вывожу с типами и как надо — в части ресурсов на демо-примере это видно. Про бестиповый текст я имел в виду т.н. нелегальные экстеншены, которые нарушают стандарт но могут присутствовать.


Про PUT и If-Match, простите, не понял. Не могли бы раскрыть мысль подробнее?

Непросто понять нравы дикарей — сначала делают необоснованные предположения, потом делают из них космического масштаба выводы )

Хм… Когда я начал свою крайнюю статью точно так же, ее поместили в черновики с требованием убрать имя компании. С интересом наблюдаю за развитием событий в данном случае.

Спасибо.
Можно почитать обзорные статьи (и соседние по ссылкам), про опыт имплементации еще рассказывают на различных конференциях, как в России ОТКРЫТЫЕ СТАНДАРТЫ API, КАК ИНФРАСТРУКТУРА ДЛЯ ИННОВАЦИЙ: ПРИМЕРЫ МЕДИЦИНСКИХ ДАННЫХ HL7 FHIR INTERNATIONAL PATIENT SUMMARY, так и на многочисленных зарубежных. Но я не уверен насчет наличия материалов с них в сети.

Поля (как на верхнем уровне, так и в любом вложенном объекте) отображаются в алфавитном порядке (для унификации, хотя можно сортировать по условному ордеру в схеме структуры ресурса). Список полей ресурса (вместе с их типами, списками допустимых значений, флагами обязательности и множественности значения) берется из StructureDefinition конкретного типа — независимо от наличия/отсутствия значений этих полей в выбранном элементе. Если при этом в элементе ресурса присутствуют поля, не перечисленные в StructureDefinition, то они показываются ниже и всегда как строки — потому что без метаданных я не знаю их тип, но как честный человек должен показать их наличие и дать некоторую возможность редактирования ) Насчет того, что не может менять — я конечно могу сделать id и часть других реквизитов недоступными для редактирования, но тот же id во многих ресурсах может нести некоторую семантику (например при синхронизации со сторонней системой или при загрузке стандартного каталога с четко определенными айдишниками). Поэтому, а еще для универсальности, я не стал запрещать их редактирование.
То, что вы говорите про "видеть сам ресурс"… Конечно, мне самому привычнее смотреть содержимое ресурса в форматированном ямле или жсоне ) Но так можно дойти до того, что — используйте Postman или просто браузер, кидайте запросы вручную и смотрите ответы текстом ) Но имхо это не лишает данный проект права на жизнь. Наглядная визуализация структуры ресурса, типов и описаний полей, демонстрация возможно незаполненных реквизитов, да и просто — почему бы и нет? В комментарии выше даже предвосхищали появление визуализатора подобного рода )

Насчет систем не скажу, но насколько я помню доклады на конференции — в Австралии и Канаде муниципальные структуры используют FHIR, в США также, но у них ситуация немного отличается — проще в чатике по ссылке из статьи напрямую спросить, там присутствуют участники, непосредственно занимающиеся этими вопросами. Россия традиционно не спешит быть в авангарде, присматривается к чужому опыту )

На первую производную реагируем, да ) Хотя Будда завещал пребывать в равновесии.

О, паралимпиада, люблю ) Кот претендует на медаль в номинации "уникального и необычного" ) Питон не знаю, но алгоритм тривиально пишется на любом языке, напишу на сях )


bool f (int *m, int b, int e) {
    int c=(b+e)/2;
    return b>=e ? true : b+1==e ? m[b]==m[e] : f(m,b,c) && f(m,c,e);
}

А вообще надо вводить новый моноидальный тип и решать эту задачу как свертку структуры по моноиду. Ибо в таком случае умный компилятор сумеет сам распараллелить процесс на нужное число потоков/ядер и порвать по бенчмаркам все предложенное.

Информация

В рейтинге
444-й
Откуда
Воронеж, Воронежская обл., Россия
Дата рождения
Зарегистрирован
Активность