Горячее
Лучшее
Свежее
Подписки
Сообщества
Блоги
Эксперты
Войти
Забыли пароль?
или продолжите с
Создать аккаунт
Я хочу получать рассылки с лучшими постами за неделю
или
Восстановление пароля
Восстановление пароля
Получить код в Telegram
Войти с Яндекс ID Войти через VK ID
Создавая аккаунт, я соглашаюсь с правилами Пикабу и даю согласие на обработку персональных данных.
ПромокодыРаботаКурсыРекламаИгрыПополнение Steam
Пикабу Игры +1000 бесплатных онлайн игр
Погрузитесь в логическую головоломку: откручивайте болты из планок на самых сложных уровнях! Вы не только расслабитесь в конце сложного дня, но еще и натренируете свой мозг, решая увлекательные задачки. Справитесь с ролью опытного мастера? Попробуйте свои силы в режиме онлайн бесплатно и без регистрации!

Головоломка. Болты и Гайки

Казуальные, Гиперказуальные, Головоломки

Играть

Топ прошлой недели

  • AlexKud AlexKud 38 постов
  • SergeyKorsun SergeyKorsun 12 постов
  • SupportHuaport SupportHuaport 5 постов
Посмотреть весь топ

Лучшие посты недели

Рассылка Пикабу: отправляем самые рейтинговые материалы за 7 дней 🔥

Нажимая кнопку «Подписаться на рассылку», я соглашаюсь с Правилами Пикабу и даю согласие на обработку персональных данных.

Спасибо, что подписались!
Пожалуйста, проверьте почту 😊

Помощь Кодекс Пикабу Команда Пикабу Моб. приложение
Правила соцсети О рекомендациях О компании
Промокоды Биг Гик Промокоды Lamoda Промокоды МВидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня

Haskell

С этим тегом используют

Программирование Все
16 постов сначала свежее
51
Reglam
Reglam
19 дней назад
IT-юмор

Мысль изречённая есть ложь⁠⁠

Мысль изречённая есть ложь IT юмор, Haskell, ИА Панорама

https://panorama.pub/news/skolniki-kotoryh-s-1-klassa

Показать полностью 1
IT юмор Haskell ИА Панорама
31
1
thecodemedia
thecodemedia
1 месяц назад

Пояснительная бригада: мем про побочные эффекты⁠⁠

Пояснительная бригада: мем про побочные эффекты Программирование, IT, Разработка, Программист, Haskell, Python, Код

На картинке написано:

— Я прогаю на Haskell

— Это что значит?

— Это значит, что он боится побочных эффектов!

— Ничего подобного!

— printf («Hello world!"\n);

— Патрик, хорош, ты его перепугал!

Поясняет Паша Вавилин, наставник на курсе по Python.

В функциональном программировании есть понятие side-эффекта: это когда функция не только возвращает результат, но и делает что-то кроме. Например, вывести что-то на экран, записать в файл, поменять что-то внутри какой-то другой переменной в программе — это всё побочные эффекты (side effects).

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

Дополнительно пара слов от «Кода»: мы как-то давно писали про чистые функции. Идея в том, что чистой считается та функция, которая получила что-то на вход, обработала, выдала на выходе. И мы должны быть уверены, что все эти вычисления произошли только внутри функции и ничего другого в программе не было затронуто.

Например, у нас есть переменная в корне программы. Мы её используем, чтобы считать какие-то нужные нам события. Если какая-то функция в программе добавляет что-то в эту переменную, это побочный эффект.

Вот мы программируем себе и положили побочный эффект «Увеличить глобальный счётчик» в одну из функций. Вызвали её по делу. Она правильно всё посчитала и увеличила счётчик. Пока что ничего страшного.

Через полгода другой программист поддерживает за нас программу. Видит: «О, эта функция делает то, что мне нужно, вызову её». И он не знает, что, помимо своей основной работы, она ещё увеличивает глобальный счётчик (забыл про побочный эффект). Он её вызывает в цикле тысячу раз, и она тысячу раз увеличивает счётчик. А счётчик, в свою очередь, завязан на что-то другое в программе. И в итоге вся программа ломается.

Чтобы такого не было, разработчики стремятся писать чистые функции. А в функциональных языках и подавно.

Показать полностью 1
Программирование IT Разработка Программист Haskell Python Код
1
110
shakerdoto
1 год назад
IT-юмор

Разница⁠⁠

Разница Python, Haskell, Скриншот
Разница Python, Haskell, Скриншот
Показать полностью 2
Python Haskell Скриншот
31
Партнёрский материал Реклама
specials
specials

Как бросить курить и не сорваться: инструкция от тех, кто смог⁠⁠

Выходишь покурить на пять минут, а возвращаешься через 10 лет: с хрипом, тремя неудачными попытками бросить и пачкой мятных жвачек в кармане. Это как плохой сериал: тянется слишком долго, а финал все равно разочарует. Но выйти из этого сценария можно и даже не обязательно драматично. Мы собрали истории тех, кто боролся с зависимостью ради любимого человека, здоровья или лучшей жизни.

Как бросить курить и не сорваться: инструкция от тех, кто смог Курение, Борьба с курением, Зависимость, Telegram (ссылка), ВКонтакте (ссылка), Длиннопост

История 1 — отражение

@ holoroad

Маленькая дочка почти научилась ходить и всюду телепалась за мной. Я не курил при ней. Ходил на балкон, а она, прильнув к стеклу, смотрела на меня и ждала, когда я докурю и выйду к ней. И в какой-то момент она начала повторять за мной вот эти движения. Маленький человечек, ей было года полтора или два, прикладывала воображаемую сигарету к губам, а потом делала вид, что выпускает дым. И весело так на меня смотрела, сквозь стекло балконной двери. Ей нравилось все, что со мной связано, и она подражала всем моим действиям. Я курил уже двадцать лет и, конечно, делал множество попыток бросить до этого. Но в этот раз у меня в первый раз появилась по-настоящему важная причина бросить. Это важно для человека, который безгранично мне доверяет. С тех пор прошло почти десять лет, в течение которых я не сделал ни одной затяжки.

Решение бросить курить — одно из лучших, которое вы можете принять для своего здоровья, будущего и близких. Но справиться с зависимостью только потому, что «это вредно» будет тяжело. А вот если хотите не задыхаться, поднимаясь по лестнице, или волнуетесь за своего ребенка, которые вдыхает табачный дым, — уже другое дело.

Сформулируйте, что для вас значит отказ от никотина. Это может быть желание прожить дольше, избавиться от проблем со здоровьем, выглядеть моложе, сэкономить деньги или защитить близких от пассивного курения. Напоминание об этой причине повесьте на видное место.

История 2 — список

@ maxneb

Беременность жены, рождение ребенка, здоровье, деньги — ничего не было веским поводом бросить окончательно. Постоянно срывался. Помогло составить список, что теряю и что получаю от сигарет, и понимание, что хотя бы одна затяжка — и все насмарку: пару месяцев буду курить. Только список и его осознание. Для каждого он свой. И постоянное обращение к нему. После составления списка курил еще. Но он как заноза висел в голове с вопросом «зачем?»... Так, что-то щелкнуло и сейчас не тянет. Иногда тянет физически, но осознание бесполезности курения сразу глушит позывы. Полгода, полет нормальный...

Бросать на авось — идея, которая подойдет не всем. Нужно понимать, что делать в трудные моменты:

  • Определите дату отказа. Подготовьтесь морально, уберите сигареты, зажигалки, пепельницы.

  • Замените привычки. Сигарету в руках можно заменить орешками, палочками морковки, жвачкой или даже кубиком льда.

  • Займите время. Вспомните, чем вы любили заниматься: спорт, хобби, прогулки.

  • Планируйте, что делать при тяге. Она длится всего 3–5 минут. Дыхательные практики или звонок другу помогут пережить сильное желание закурить.

  • Откажитесь от «наградных сигарет». Одна затяжка и вы откатитесь назад.

Можно бросить резко, «с понедельника», или постепенно, снижая количество сигарет до нуля. Главное — определиться и не отступать.

История 3 — переключение

@ Spaka

45 лет, стаж 30. Пытался завязать много раз, потом понял, что после каждой попытки бросить, курить начинаешь больше. Как ребенок, которому не дают вкусняшку, а она случайно попала ему в руки. Из чего мозг сделал вывод: не уверен — не бросай. Потом стал замечать, что организм уже стал сам просить перестать курить. По утрам было очень неприятно во рту, удовольствие после сигареты стало короче, а негатив, приходящий следом, ощутимее: неприятные ощущения в горле, боли миндалин, страх схватить онкодиагноз. Хотя врачи говорили, что все ок, в голове-то гоняешь мысли. Я решил попробовать обмануть сам себя. Не делать из процесса отказа какого-то события. Бросить так, как будто это и должно было произойти, но ты не знаешь когда. Про себя помолился, как сумел, и попросил помощи, хитро прищурил глаз и в момент, когда забыл купить про запас (оставалась пара штук в пачке), просто перестал курить. Мне теперь даже странно, как я раньше это делал. Так и живу почти два года. Кстати, раньше в момент завязки курящих ненавидел, дым был очень противен, до тошноты. Теперь все равно. Присоединяйтесь ;)

Есть несколько стратегий отказа от курения:

  • Резкий. Эффективный и решительный подход.

  • Постепенный. Сначала — меньше сигарет, потом — меньше затяжек. И так до нуля.

  • Психологическая замена. Каждая сигарета — это ритуал. Найдите для каждого из них «здоровую замену».

  • Медикаментозная терапия. При сильной зависимости врач может порекомендовать никотинозаместительную терапию (пластыри, таблетки, жвачки) или препараты, которые помогают справиться с синдромом отмены. Но любые лекарства принимаются только по рекомендации специалиста.

Каждый, кто хочет оставить зависимость в прошлом, может обратиться в центры здоровья, которые работают при поддержке нацпроекта «Продолжительная и активная жизнь», и получить необходимую помощь специалистов. Адреса доступны на официальном портале Минздрава России о здоровье: takzdorovo.ru. Также можно позвонить на горячую линию по отказу от зависимостей 8 800 200-0-200.

История 4 — форма

Аноним

Курила электронки 2 года как замену обычным сигаретам. Думала, что это не так дорого, не так вредно да и для девушки вроде более привлекательно: не пахнут волосы и руки. А потом решила привести свое тело в форму. Стала ходить в зал и поняла, что задыхаюсь на первом же упражнении, хотя женщины гораздо старше меня бодрячком. Было очень тяжело слезть. Друзья советовали заменять сигаретами. А потом уехала в отпуск в страну, где нельзя покупать электронки, отвлеклась, и после возвращения уже не тянуло. Даже на тусовках, где все дымят.

За модными гаджетами и фруктовыми ароматами скрывается химическая бомба, разрушающая организм быстрее, чем обычные сигареты. Электронные сигареты активно продвигаются производителями как «безопасная» альтернатива сигаретам. Но курение вейпа может обернуться серьезными проблемами: от кашля и одышки до поражения сосудов и дыхательных путей.

«Особую тревогу вызывает рост потребления табачных изделий и электронных сигарет. Согласно исследованию, проведенному в нашем Центре, 36,8% курильщиков потребляют одновременно и табак, и электронные сигареты. Среди молодежи в возрасте 25-39 лет этот показатель превышает 45%. Электронные никотиносодержащие и безникотиновые устройства поражают сердце, сосуды, дыхательную систему и ДНК организма не менее пагубно, чем традиционные сигареты, а в ряде случаев способны вызывать острые состояния, включая сосудистые поражения и летальные исходы» – рассказывает руководитель Центра профилактики и контроля потребления табака НМИЦ терапии и профилактической медицины Минздрава России Маринэ Гамбарян.

История 5 — пари

@ kernima

Вроде не было никаких серьезных предпосылок, чтобы бросить. Да и чтобы начать: просто все вокруг курили, думал, это сейчас тренд. А потом как-то сидели в баре и решили поспорить с некурящим другом. Он затирал, что моя жизнь из-за электронки катится ко дну, я — доказывал, что это всего лишь маленькая шалость. В общем поспорили на пять тысяч. Чтобы было легче и можно было отвлечься, начал бегать по утрам. Друг проиграл, а я возвращаться к курению не стал. Вдруг снова у еды появился вкус, я начал высыпаться и больше не устаю на втором лестничном проеме. Короче, советую!))

Сульфат никотина, один из компонентов электронных сигарет, раньше использовали как пестицид, но запретили из-за высокой токсичности. Жидкость для «электронок» содержит и опасные химикаты вроде пропиленгликоля, ацетальдегида и акролеина — промышленных веществ, способных вызывать воспаления, поражения органов и мутации клеток. Ароматизаторы, создающие иллюзию безвредности, на деле могут привести к более тяжелой интоксикации, чем при курении сигарет. А еще вейпы содержат не природный, а синтетический никотин — солевой. Он быстрее всасывается, дольше выводится и вызывает зависимость стремительнее.

Когда организм отвыкает от никотина, бывает нелегко: люди становятся раздражительным и нервозными, быстро устают, возникают сухость во рту, кашель, трудности с концентрацией. Важную роль в борьбе с этими симптомами играет питание. В рацион стоит включить овощи, фрукты, орехи, семечки. Клетчатка способствует очищению организма от токсинов. Важно питаться сбалансировано: с достаточным количеством белков, жиров, углеводов и витаминов. Лучше временно исключить продукты, усиливающие удовольствие от табака (например, мясо), а также отказаться от алкоголя, кофе и крепкого чая. Они могут спровоцировать желание закурить. А вот большое количество воды, травяных чаев и настоев облегчит очищение организма и поможет справиться с сухостью во рту.

История 6 — связь

Аноним

Устал курить, понял, что мне это мешает заниматься спортом и в целом комфортно себя чувствовать. Пошел через ассоциации: покурил во время головной боли, и потом через самовнушение дал себе установку, что голова болела от курения. Звучит странно, конечно, но это сработало. Никотиновую зависимость снижал постепенно через редкое курение кальяна (2-3 раза в неделю с последующим уменьшением).

Чтобы добиться успеха в отказе от курения, стоит подготовиться. Обязательно расскажите о своем решении друзьям и близким — поддержка со стороны очень важна. Если вы уже предпринимали попытки бросить, вспомните, что тогда пошло не так, и постарайтесь не повторять этих ошибок.

Разберитесь, что именно тянет вас к сигарете: скука, стресс, привычка? Когда вы это осознаете, будет легче подобрать альтернативные действия — прогулку, книгу, разговор с близким. Учитесь распознавать моменты, когда особенно хочется закурить, и переключаться на что-то другое. Можно подключиться к программам или группам поддержки — это поможет не сдаваться. И главное: уберите из дома все сигареты.

История 7 — вершина

Аноним

Поднимался с сыном по Пушкинской тропе на гору Железная. Мне лет сорок пять было, идем общаемся, сын бегает туда-сюда. Ну идем короче, а сзади нас догоняет семейная пара, мирно о чем-то щебеча между собой. Догнали и обходят. И так спокойно удаляются… Все бы ничего, но им лет по шестьдесят, если не больше. Я попробовал в их темпе, но задыхаться стал. Короче, поднялся я на гору, спустился, смял пачку и выкинул в мусорную урну. Вот уже 13 лет не курю. Стаж 27 лет.

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


Каждый, кто пытался избавиться от никотиновой зависимости, знает, как это тяжело. Ломка, раздражительность, навязчивые мысли. Даже при переходе на вейпы, иллюзия «меньшего вреда» быстро развеивается: химические коктейли из ароматических смесей также бьют по легким, сосудам и всему организму.

Хорошая новость в том, что вы не одни. В сообществе «Давай бросать» (ВКонтакте и мессенджере Telegram), который работает при поддержке нацпроекта «Продолжительная и активная жизнь» знают, каково бороться с триггерами, искать замену привычке и удерживать себя от срыва. Здесь делятся историями тех, кто смог, поддерживают тех, кто только начал, и помогают разобраться в главном: как пережить отказ без мучений.

Социальная реклама. АНО «Национальные приоритеты», ИНН: 9704007633

Показать полностью
Курение Борьба с курением Зависимость Telegram (ссылка) ВКонтакте (ссылка) Длиннопост
1
Neurosonya
Neurosonya
1 год назад

Tabnine напишет код за вас⁠⁠

Данные для обучения модели Tabnine собраны  с открытых репозиториев на GitHub.

Сервис работает для Python, Java, Haskell и C++. Tabnine совместим с VS Code, Sublime Text, Atom, Vim и другими редакторами кода.

Больше полезных ии сервисов в моем тг (ссылка в описании профиля), там я рассказываю, как использовать нейросети для бизнеса, работы и учебы

Показать полностью
Искусственный интеллект Нейронные сети Полезное Digital Код Программирование Технологии Инновации Будущее Программист Python Java C++ Haskell Видео Без звука
2
AlexErf
2 года назад

Примеры функционального программирование для новичков⁠⁠

Представь, что у тебя есть три волшебные машины: машина A, машина B и машина C. Каждая машина делает что-то особенное с предметами:

1. Машина A окрашивает вещи в зеленый цвет.

2. Машина B делает вещи в два раза больше.

3. Машина C превращает фрукты в овощи.

Теперь, используя язык программирования Haskell, мы можем создать код, который моделирует это поведение:

haskell

type Item = String

machineA :: Item -> Item

machineA item = "зеленый " ++ item

machineB :: Item -> Item

machineB item = "большой " ++ item

machineC :: Item -> Item

machineC "яблоко" = "маленькая красная морковка"

machineC item = item

transformItem :: (Item -> Item) -> (Item -> Item) -> (Item -> Item) -> Item -> Item

transformItem = (.) . (.)

В этом примере мы определяем тип Item для представления предметов. Мы также определяем функции machineA, machineB и machineC, которые соответствуют машинам A, B и C из нашего описания. Затем мы определяем функцию transformItem, которая позволяет нам применить три машины одна за другой к предмету.

haskell

main :: IO ()

main = do

let item = "яблоко"

let transformedItem = transformItem machineA machineB machineC item

putStrLn transformedItem

Здесь мы определяем item как "яблоко" и применяем функцию transformItem к нему, чтобы получить преобразованный предмет. Затем мы выводим результат на экран. В итоге, мы получим "большая зеленая морковка", как и ожидалось из нашего описания.

Таким образом, с помощью функционального программирования на языке Haskell, мы смогли элегантно и кратко описать сложную операцию, используя мощные функции композиции и стиль без указания точки.

Больше примеров в https://t.me/Koding404

Показать полностью
Гайд Технологии Инструкция Программирование Haskell Разработка IT Инновации Обучение Текст
8
20
xfides
2 года назад
Лига программистов

Занятия с напарниками по Haskell (4)⁠⁠

Добрый день. Продолжаю делиться наблюдениями из нашей группы по изучению Haskell (

часть 1, часть 2, часть 3 ). Воскресенье, дел мало. Можно посидеть и посочинять что-то, или рассказать. Тем более давно была предыдущая часть.

(Оффтоп) Прикольно. Только что узнал, что абзацы в тексте в редакторе пикабу можно разделять не только через "enter", но и через специальную кнопку "текст". Подобные блоки текста можно перетаскивать в режиме drag-and-drop.

Занятия у нас продолжаются. Был небольшой перерыв в 2 недели. Один из участников был в отпуске. Он хорошо отдохнул. Природа, свежий воздух, все дела. Вернулся, и все стало по прежнему, но хотя бы не так душно (шутка). 4 занятия в неделю. Читаем книгу, общаемся, решаем задачки.

И начитали мы уже 300 страниц. Из 1200. Достижение =). Да, пусть еще не монады. Но и не сказать , что идем на расслабоне. Книжка хитрая. Идеально держит баланс между "легко заскучать" и "трудно, что легче забросить". За это ей большой респект. Ради интереса попробовал почитать знаменитую "Изучай хаскель во имя добра" - ну не то. Даже несмотря на перевод, картинки, красивое оформление - путь изучения идет через спотыкания. Но это лично мое мнение. Не надо делать на этом глобальные выводы =)

Проходили недавно рекурсию. Ох и злобная тема. Вроде логика простая. Задал базовое условие, и вызываешь фукнцию внутри определения другой. Но как пошли задачки с "переподвыпертами"  - так сразу надо думать. Дополнительные вспомогательные функции писать, совмещать их по типам. Зато сразу научился различать одинарные и двойные кавычки. В одинарных кавычках тип данных - Char, в двойных - [Char], то есть String. Просто на этом моменте чаще всего не сходились типы в задачках на рекурсию.

Сейчас изучаем списки. Забавно автор их подает. Через такие термины как "cons cell" и "spine". Знакомит с основами ленивых вычислений haskell. Например, length списка будет вычислять только хребет списка (spine), не заботясь о том, что лежит в ячейках (cons cell) самого списка. Не заботясь - значит не вычисляя выражение, оставляя его в виде thunk. А само выражение, допускающее внутри себя thunk-и, находится в weak head normal form

( https://wiki.haskell.org/Weak_head_normal_form ). Читатель скажет: "фигня какая-то". А это только введение =)

Ладно уж. Учимся и страдаем. Страдаем и учимся. Хорошо, что все-таки вместе, в группе. Потому что в одиночку неприязнь к подобным вещам наступает быстро. А так, не хочется сильно тупить на созвоне - так даже иногда заранее читаешь наперед.

Прикол даже появился. Как-то попалась нам задачка вычислить 10-милионный палиндром на целых числах. Не спрашивайте, откуда задачка взялась. Кто-то пришел, ноги с улицы не вытер, и занес нам это. Так эта задачка сильно раззадорила участника нашей группы. И чтобы её решить - он походу наперед весь хаскель уже выучил. И оптимизации, и массивы, и фиг еще знает что. А я что - а я дождусь, когда он её решит, и я поинтересуюсь решением. Да, такой вот я нахлебник в этом вопросе =)

Автор упомянул функторы вскользь. Ах. Прям запахло приближением монад. Пока не совсем понятно. Абстракция над преобразованием абстрактного структурированного типа. Знакомиться подробно будем позже. Но радует, что я все ближе и ближе к своей цели по пониманию монад.

Вот такие дела. Пора выводы делать. А они простые. Хорошо, что с пользой трачу время своего сна на haskell, хоть это и не всегда приятно по ощущениям. Радует, что что-то остается в голове. Стремлюсь к большему. Чего и вам, читатели, желаю =)

Показать полностью
[моё] Haskell Хаскель Программирование IT Обучение Текст
12
12
xfides
3 года назад
Лига программистов

Занятия с напарниками по Haskell (3)⁠⁠

Добрый вечер. Продолжаю делиться наблюдениями из нашей группы по изучению  Haskell (
часть 1,  часть 2  ). Скорее всего, пишу текст для себя, попутно повторяя \ вспоминая пройденный материал. Итак, поехали.

Прошли базовые функции для списков: head, tail, take, drop, !! . Отдельная благодарность автору книги в этом моменте, что он не стал подробно расписывать, какие же крутые это вещи, а просто обозначил их как API. Берите, пользуйтесь. Вы же не глупые: сможете различить, что значит взять голову списка, а что значит взять первые 5 элементов. Так что эту тему проскочили быстро.


А дальше начались базовые определения даже не столько языка Haskell, а  программирования в целом. Type, scope, local bindings, data structure, list... Хорошо, что у каждого из нас есть какой-никакой программистский бэкграунд. Поэтому именно эти определения у нас не вызвали затруднения. А вот следующие термины уже нас напрягли.


Data declaration (0), type constructor (1), data constructor (2). Вот в наших головах слово "конструктор" связано с  тем, что это функция, которая должна что-то создать. Конструктор может принимать аргументы. А когда мы пишем (0) data (1) Bool = (2) False | (2) True - тут вроде как ничего не создается в прошлом, привычном для нас понимании. Ну ок, допустим, что мы ввели новую сущность тип Bool. Да, он появился на свет, типа  создался. Но False, True - почему  их называем конструкторами? Это же значения, это данные, которые "населяют" наш Bool. Их не вызывают. Бесспорно , какие-то догадки есть. Кто-то наперед заглянул, кто-то гугл помучил. Но все равно очень непривычно. В этом моменте впервые столкнулись с тем, что наш предыдущий опыт скорее даже мешал, чем помогал в осознании текста книги.

Затем автор ввел понятие переменной типа (type variable). Заставил нас различать оператор ++ и функцию concat. Заставил прочувствовать разницу следующих сигнатур: 1) [a]->[a]->[a] и 2) [[a]] -> [a]. Признаюсь,  вроде бы такой простой пример, но у меня с ним трудности. До сих пор спотыкаюсь на различии этих видов конкатенации. И там, и тут возвращаются списки. А как они получились - мне не важно. Может, как станет важно, так и все станет легко и прозрачно.


Дальше нас начали знакомить с базовыми типами. Научились отличать смысл следующих слов: Integral, Int, Integer. Через пару страниц посмеялись, что, оказывается, в комплект входят Int8, Int16... Все познается в сравнении. JS, твой универсальный double на все времена по сравнению с зоопарком в Haskell кажется таким простым. А Integer от Haskell удивительно похож по своей задумке на BigInt в JS. Вот интересно,  а как можно считать бесконечно большие числа на компьютере, если не через биты памяти того же стандарта IEE-754? Переводить в строки, строить отдельный парсер... Кто знает, напиши в комментариях, в чем там фокус?

В итоге, мы научились чувствовать, что в Haskell есть отдельный уровень типизации, а есть отдельный уровень вычислений. Путать их нехорошо. Их надо держать под своим контролем в связке и согласованности. Еще попутно автор намекал, что нас ждут Type classes. Просил не расстраиваться. Сказал, что пока думайте о них как об интерфейсах в классических языках программирования про ООП. А потом, когда дойдем до этой темы, там все нам объяснит. Брр. Опять отсылка в будущее. Бесит.

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

Показать полностью
[моё] Haskell Хаскель Программирование IT Обучение Текст
5
Партнёрский материал Реклама
specials
specials

Даже получать удовольствие ты должен с коммерческой выгодой для себя ©⁠⁠

Так говорил греческий судовладелец, миллиардер Аристотель Онассис. Миллиардеры, конечно, живут немножко иначе, но этот принцип вполне распространяется и на «простых смертных». Давайте посчитаем, какую выгоду вы получаете.

Посчитать

Бизнес Выгода Текст
15
xfides
3 года назад
Лига программистов

Занятия с напарниками по Haskell (2)⁠⁠

Здравствуйте. Продолжаю описывать интересные моменты из наших занятий в группе по Haskell ( Предыдущий пост ). 


Прошла еще неделя. Мы стабильно выдерживаем 1ч 20мин за занятие в день. Иногда чуть подольше.

Книжка тупиков пока нам не ставит. Но после первой главы восторженное впечатление от книги подупало. Это связано скорее всего с 2 вещами. Первое, это неравномерность подачи материала в плане трудности. То есть пошли места, где все очень легко. Ты расслабляешься, читаешь в быстром темпе страницу, другую, а потом  раз - и буксуешь абзац за абзацем.


Второе - о, это особенный момент, который встречается много в каких обучающих материалах!

Этот неприятный момент -  прыжки в будущее. Можно читать, разбирать базовые операции со строками, но уже в примерах используются модули и\или монада IO. Причем автор книги уверяет читателя в том, что вы узнаете и поймете эти моменты потом. Сейчас же просто скопируйте пример кода и запустите. Сместите фокус на то, что делает функция putStrLn, а на тип не смотрите. Потом узнаете зачем в типе у этой функции написано IO.


Знаете, вот когда постигал основы JS в свое время, часто натыкался на подобное. Вот внешняя функция  возвращает внутреннюю функцию, а переменные внешней будут жить и использоваться внутренней благодаря замыканию. Да вы это обязательно поймете. Будете писать код, примеры, упражнения, и все встанет на свои места. А пока изучим следующую тему.


Теряется последовательность изложения материала. А это сбивает. И если мозг можно усмирить - реально сместить фокус на важное, то на эмоциональном уровне остаются мелкие "зазубрины". Эх, вот бы еще и то знать. А как вон ту штуку использовать, про которую рассказали? Блин, ну интересно же было бы понять. А прыгать вперед еще хуже. Это и с мысли собьет. И все равно это будет непонятно.


В общем, как всегда, не бывает ничего идеального. Мы даже уже даже начали смеяться с подобных моментов в книге. Шутили, типа ну вот, раз уже здесь про монады начали упоминать, значит на следующей неделе книжку закончим.


В начале занятий иногда проводим опросы, вдруг кто что подзабыл. Был случай: дали напарнику пример из книги на подстановки из лямбда-исчисления, применение термов. И пример был решен. Вроде даже хорошо. Только забыли про альфа-эквивалентность. И следовательно, ответ был не верен. Ничего страшного. Другой пример уже был сделан как надо.


Начали делать первые практические упражнения. Тут наши предпочтения разошлись. Моя личная цель - это изучения языка, а не его экосистемы. Поэтому я просто открываю вкладку с онлайн компилятором Haskell и тут же решаю задачи. Ребята же захотели установить среду разработки себе на компьютер локально. GhcUP или как-то так. Там еще stack, cabal. Брр, мне пока лень в этом разбираться. Наверное, напарники поступают лучше. Может, в будущем они меня мотивируют поступить так же.

Ну и поделюсь еще одним интересным случаем. Разбирали мы простейшие математические операторы в Haskell. Умножение, сложение, вычитание. И div, mod, quot, rem. Какой остаток будет от деления 20 на 6? Два - бодро отвечает вся группа. А каков будет остаток от деления 20 на -6? И все, мы поплыли. Думали, сейчас в гугле посмотрим, за 5 минут разберемся. 3 парням, которым за 30, и не справиться с таким простейшим вопросом? Ага. Не справились, ни за 5 минут, ни за оставшиеся полчаса того занятия. Справились за выходные к следующему уроку. И то, на троих. Первый разобрался, что такое делимое, делитель, неполное частное, остаток от деления. Второй указал на момент, что бывает округление в минус бесконечность и к нулю. Третий собрал эти факты в кучу, и наконец-то - вы можете нас поздравить с пониманием куска школьной программы.


Посмотрим, что будет дальше. Будут новые главы книги, будут новые вызовы. Справимся? =) 

Показать полностью
[моё] IT Обучение Программирование Haskell Хаскель Текст
13
Посты не найдены
О нас
О Пикабу Контакты Реклама Сообщить об ошибке Сообщить о нарушении законодательства Отзывы и предложения Новости Пикабу Мобильное приложение RSS
Информация
Помощь Кодекс Пикабу Команда Пикабу Конфиденциальность Правила соцсети О рекомендациях О компании
Наши проекты
Блоги Работа Промокоды Игры Курсы
Партнёры
Промокоды Биг Гик Промокоды Lamoda Промокоды Мвидео Промокоды Яндекс Директ Промокоды Отелло Промокоды Aroma Butik Промокоды Яндекс Путешествия Постила Футбол сегодня
На информационном ресурсе Pikabu.ru применяются рекомендательные технологии