This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-03-12
Channels
- # beginners (4)
- # boot (58)
- # braid-chat (9)
- # cider (19)
- # clojure (26)
- # clojure-austin (8)
- # clojure-berlin (1)
- # clojure-poland (2)
- # clojure-russia (238)
- # clojurescript (22)
- # core-async (2)
- # cursive (6)
- # datomic (32)
- # emacs (5)
- # hoplon (1)
- # jobs (10)
- # keechma (1)
- # ldnclj (2)
- # off-topic (5)
- # om (7)
- # onyx (4)
- # proton (1)
- # re-frame (10)
- # reagent (5)
- # ring-swagger (10)
а работал кто-нибудь с JAXB в clojure?
пытаюсь создать маршалер для класса но никак не могу понять что нужно передать в JAXBContext.newInstance() статичный метод
(class SomeJAXBAnnotatedClass) возвращает java.lang.Class
@delaguardo: а что за кейс? на первый взгляд JAXB излишен в clojure мире.
SOAP сервис настолько огромный что реализация всех методов через простую генерацию xml растянется на пару месяцев
@andfadeev: getName помог) спасибо
> выращивать картофель закрывшись от марсианской атмосферы полиэтиленом, учиться надо)) и в чем проблема?
The atmospheric pressure on the Martian surface averages 600 pascals (0.087 psi; 6.0 mbar), about 0.6% of Earth's mean sea level pressure of 101.3 kilopascals (14.69 psi; 1,013 mbar). https://en.wikipedia.org/wiki/Atmosphere_of_Mars
@prepor там по сюжету марсианские бури -- частое явление. герой в частности остается на планете из-за того, что сбит булыжником. плюс, переходную камеру срывает тоже из-за нее. а наш герой закрывает дырку от переходной камеры метра 3 в диаметре полиэтиленом, и живет еще спокойно несколько месяцев. им надо было сразу полиэтиленовый периметр делать
@andmed: 1. марсианские бури это действительно фантастика, но 2. вы как-то невнимательно смотрели / читали. сбивает его не булыжником, переходную камеру срывает не из-за бури, а из-за разгерметизации. периметр там и так фактически сделан из полиэтилена (и скорее всего примерно такие не жесткие конструкции и будут использоваться).
в фильме / книге действительно довольно много ляпов / условностей, но их концентрация на количество подробностей / фактов невероятно низкая. фильм / книга сделаны с потрясающей любовью к науке и инженерии, сложно представить сколько детей выберут инженерное и научное будущее благодаря нему, а скольким взрослым он слегка вправил мозги. так что нефиг наезжать на него в этом благородном чатике!
Ребята, а кто-нибудь кроме @asolovyov пробовал rum-ом на сервер сайде рендерить? )
Меня часто спрашивают, когда рассказываю про Clojure - "почему в языке нет типов? Мол было бы гораздо проще переходить., если бы были типы." У кого из присутствующих есть мысли почему Рич их не ввел?
clojure.typed это конечно clojure но трэш какой-то
почему создатель не ввел типы
всмысле Рич
какое обоснование
ну язык уже не торт. уже нет той красоты что ли. ну и компилится долго очень
Ну на самом деле тот, кто будет говорить что кложур плох по этой причине -- будет прав)
Сегодня случайно я нашел очень сжатое и емкое обоснование. Делюсь: latent typing: In computer programming, latent typing refers to a type system where types are associated with values and not variables
иными словами как можно 42 дополнительно приклеить тип, когда само 42 говорит за себя какого оно типа
Просто в Clojure есть только значения (values) и есть функции. У значений типы приклеены, что называется "на лбу" и дополнительная типизация не нужна
а в языках где есть переменные, нужно помечать то место в памяти, куда будут записаны значения, какого типа будет хранить эта переменная.
в принципе вещи наверно говорю очевидные, но вот это определение довольно емкое и точное. взял с вики.
> а в языках где есть переменные, нужно помечать то место в памяти, куда будут записаны значения, какого типа будет хранить эта переменная. oO
системы типов нужны чтобы сразу запрещать определенное поведение, т.е. описывать ограничения, переменные каких типов где могут появляться. если ты не будешь этого делать - у тебя просто будет динамическая типизация. и никаких “обоснований” для отсутствия статических типов это не дает.
«Система типов это гибко управляемый синтаксический метод доказательства отсутствия в программе определенных видов по- ведения при помощи классификации выражений языка по разно- видностям вычисляемых ими значений».
https://en.wikipedia.org/wiki/Talk:Latent_typing — булшитная статья какая-то
"latent typing refers to a type system where types are associated with values and not variables" — типа про такое пишут только Allen B. Tucker (28 June 2004). Computer Science Handbook
"""Иногда слово «статический» добавляется явным образом например, говорят о «языках программирования со статической типизацией», что- бы отличить тот анализ, который производится при компиляции и кото- рый мы рассматриваем здесь, от динамической (dynamic) или латент- ной (latent) типизации в языках вроде Scheme """
@fxposter: а что именно не понимаешь в скале?
@oxgrouby: меточка просто, элемент системы типов. про систему типов было выше определения
я вот с скалистами общаюсь. сам скалу не знаю. они сами мне жалуются что у нее столько диалектов, что часто могут не понимать код друг друга
тогда не знаю, про какие они диалекты говорят. наверно сахар имеют ввиду
открыл ссылку. код совершенно не читабелен
но не суть - суть в том, что чем точнее и “красивее” нужно выразить программу в типах - тем сложнее нужна система типов и тем сложнее в итоге становится понимать эту всю хрень
"открыл ссылку. код совершенно не читабелен" ну вы наверное и голландский не прочитаете не выучив сперва?
я так понимаю, что о типизированных языков есть одна особенность, все в мире они должны пометить типами. собственно чем больше сущностей, тем больше система типов, тем сложнее становится программа
чуваки, вот я смотрю на диалог и мне кажется проблема его наличия зависит тупо от рассинхронизированной терминологии
да нет, мы не спорим, наоборот мне интересно. потому что часто про эти типы речь заходит
Нубский вопрос по синтаксису: если внутри функции вычисляется несколько форм, как сделать ранний возврат значения из середины и не вычислять последующие формы?
@petr.myain: по-моему в кложуре никак
https://devchat.tv/ruby-rogues/250-rr-programming-language-evolution-and-design-with-gilad-bracha
@petr.myain: if функция не подходит?
Где-то читал хорошую статью, где эти два мира хорошо расписали - либо типы часть семантики языка, либо нет
во! Николай я как раз такую ищу
потому что сам хочу разобраться
@nicola: можешь вспомнить ссылку на статью?
Если if, то получится лесенка вложенных if else
Гилад интересный чувак, тролль или нет - это неважно. Важно то, что он озвучивает уже давно идеи, которые сейчас начинают реализовываться в популярных языках
Императивный пример без лесенки: function f () { If (condition1) { return result1 } If (condition3) { return result2 } If (condition3) { return result3 } return result4 }
@petr.myain: а может cond?
Как на Clojure написать?
Cond- посмотрю, спасибо
@mike1452: > либо типы часть семантики языка, либо нет вангую что суть статьи: ты можешь ортогонально основному ast программы нарисовать свой аст из типов, и проверить что там нет косячков. А если убрать ортогональность -- то можешь юзать типы как деталь логики в первом дереве
ты конструируешь типы - потом они тебя тащат в правильном или в не правильном направлении
Когда с Кметом разговаривали - он сказал - типа если типы правильные сделал - то программа сама пишется - в определенные type дырочки, как в пазл уже только один тип подходит
недавно мне один разраб показывал haskell
сказал что толковой IDE для него на текущей момент нет.
это так?
А когда суперпрограммист Ваня из Эхо- через 5 лет использования Haskell - говорит, что он junior
"говорит, что он junior" имеется ввиду haskell настолько глубок в своих идеях?
Cond - что надо! Exception выбрасывать - тоже вариант, не подумал. Я в этих if условиях как раз хочу проверять ошибки в полученных аргументах функции, как в этом случае более идиоматично сделать, бросать эксепшены?
@petr.myain: посмотри еще case
Например, если пользователь ввёл не валидный email
> более идиоматично сделать, бросать эксепшены? не суть, главное чтобы везде было одинаково
Case сразу посмотрел вместе с cond и condp - это всё мне подходит (cond лучше всего)
по выражению Пейтон Джонса - единственный академический язык который еще можно использовать
@nicola: Соответсвенно если не правильно продумал - тебе жопа - имеется ввиду начинай конструировать типы сначала?
уау - а как заказчики то обрадуются!!!!
вернее
этого им не объяснить. особенно если сказать что-то про функторы и монады и прочие неизвестные мне вещи )))
> как заказчики то обрадуются! а куда им деваться -- есть ряд задач которые в любом случае на хаскеллях решатся быстрее или хотя бы просто решатся
Кстати если кто не читал -http://adit.io/posts/2013-04-17-functors,_applicatives,_and_monads_in_pictures.html
это бизнес задачи? или из чистого калькулюса?
mike1452: в общем случае это задачи в которых контекст такой, что в голову не влезает, поэтому элементарно допустить глупые ошибки
да пока про haskell в ынтырпрайзе я не слышал
щас все с этими блокчейнами носятся. пилоты делают. может там хаскель всплывет
@nicola та же статья с переводом https://habrahabr.ru/post/183150/
да ну бросьте - дофега хаскеля в проде. Ну т.е. это не жава, но ниша у него своя есть. Всякие трейдеры юзают
вот буквально с месяц назад в твитторе увидел, хоть я и далек от хаскеля: https://twitter.com/donsbot/status/702777050030055424
You will use Haskell for almost all tasks: data analysis, market data publishing, database access, web services, desktop GUIs, large parallel tasks, quantitative models, solvers, everything.
десктоп ГУИ, а, как вам?:)
Я слушал подкаст чувака из facebook - они внедрили и используют несколько лет (спам еще что-то там) - но он был не уверен, что это точно, то что нужно.
Аппликативный функтор наблюдает за тем, как обычный применяет функцию
а ну и конечно https://github.com/Frege/frege, чтоб можно прям завтра в прод тащить вместе с кложурой)
https://habrastorage.org/storage2/21d/00a/044/21d00a0447e98cd11f0f3f0f3eb1dff1.gif
@nicola: Они ж хаскель взяли изначально по какой-то причине?
в хаскеле вроде крутая либа для парсинга есть?
понравился коммент к статье про Хаскель на Хабре: Изучи Хаскель во имя добра
Это название классной книжки про хаскель http://learnyouahaskell.com
точняк!
мож она для меня была недостающей каплей - но как книжка по ФП прям ах, много понял “много думал” (с)
Вобщем статью не нашел, но она где-то здесь - http://lambda-the-ultimate.org/
@nicola: спасибо!
The speaker used data from Github to determine that approximately 2.7% of Python bugs are type errors. Python’sTypeError, AttributeError, and NameError were classified as type errors. The speaker rounded 2.7% down to 2% and claimed that 2% of errors were type related. The speaker mentioned that on a commercial codebase he worked with, 1% of errors were type related, but that could be rounded down from anything less than 2%. The speaker mentioned looking at the equivalent errors in Ruby, Clojure, and other dynamic languages, but didn’t present any data on those other languages.
ну там чутка лукавство - он искал именно TypeError и прочие, есть же куча производных ошибок которые типы бы поймали, но сообщение было б совсем другим. Возьмите Optional|Maybe тип - по сути убирает NullReferenceException вовсе, которая на скок я помню в некоторых языках самая популярная ошибка.
По мне дак при наличии юнит тестов программа со строгой типизацией или нет имеет тоже самое количество ошибок. Можно еще учесть что без типизации test coverage может быть даже больше - ибо не надо мучиться с типами/интерфейсами/моками. Ну и да - репл это такая мощная штука что я не могу себе представить отказ от нее, слишком тяжелый наркотик 😞
Тут еще куча релевантных тредов - http://c2.com/cgi/wiki?DynamicTyping
хм, мне казалось Maybe как раз полностью решает проблему null? Там же компилятор тупо не даст выстрелить себе в ногу
по итогам нашей переписки, что я для себя вынес: static typing и dynamic typing два ортогональных мира. видимо в каждом подходе заложены свои механизмы разработки качественного ПО.
а мне как раз кажется что пересечений очень много и это по сути как разные стили, чем разные миры прям
Еще кста с dynamic type все решено и ничего выдумывать не надо - пиши да тестики добавляй. С системой типов же холивар за холиваром. Вон го как все обсирают - генериков нет. Хаскель хвалят - классная система типов, а жаве грят генерики буэ. В скале все сложно и прочее-прочее
maybe помогает ifы не ставить, и реализуема почти везде - @artemyarulin ты вспомни когда ты последний раз null отхватил?
дак то кложура - у нас все продумано
Обычно думаешь - эта херь обязательно есть, вяжешь на нее логику, а ее раз и нету - в haskell - нужно будет other брать и ошибку тащить с собой - считай try/catch
кложура самая клевая.
<skipped>