Haskell
Open in Telegram
Язык программирования Haskell по всем вопросам - @haarrp https://t.me/+GLeZfukB0IwxM2Ji - ссылка на канал для друга
Show more876
Subscribers
No data24 hours
-3617 days
-80930 days
Posts Archive
876
«Large Lambda Model» крутой гайд, где автор делится опытом реализации инференса модели GPT-2 на языке Haskell с использованием библиотеки hmatrix и OpenBLAS.
Основная цель проекта — выполнить прямой проход (forward pass) модели без обучения или обратного распространения ошибки.
Этот проект демонстрирует, как можно реализовать инференс модели GPT-2 на Haskell, углубляясь в детали архитектуры и работы с линейной алгеброй без использования специализированных тензорных библиотек.
Выбор инструментов:
Haskell и hmatrix: Использование Haskell с hmatrix для линейной алгебры.
OpenBLAS: Применение для оптимизации линейных операций.
Архитектура GPT-2:
Ресурсы для изучения:
- Репозитории Karpathy: NanoGPT и llm.c.
Визуализатор LLM от Brendan Bycroft.
Веб-приложение для токенизации: tiktokenizer.
▪ Читать
@haskell_tg
876
🖥 DrawDB — это система управления базами данных, ориентированная на визуализацию и моделирование данных!
🌟 Она позволяет пользователям создавать базы данных с использованием графического интерфейса, что делает процесс проектирования и взаимодействия с данными более интуитивно понятным. DrawDB может быть полезна для разработчиков, которым нужно быстро создать или визуализировать структуру базы данных без углубленного знания SQL.
🔐 Лицензия: AGPL-3.0
🖥 Github
Haskell
876
🖥 Azimutt — это инструмент для визуализации, проектирования и анализа баз данных, который помогает разработчикам и аналитикам лучше понимать структуры сложных и масштабных схем!
🌟 Он позволяет генерировать современные диаграммы сущностей и связей (ERD), исследовать связи между таблицами, искать данные в схемах и документировать базы данных. Azimutt разработан с учетом реальных задач и может обрабатывать даже большие и сложные схемы.
💡 Среди ключевых возможностей — масштабируемая визуализация ERD, поиск и фильтрация таблиц и связей, выполнение SQL-запросов с визуализацией внешних ключей и инструмент для обнаружения проблем в структуре базы данных. Это делает Azimutt полезным как для анализа существующих баз, так и для их проектирования.
🔐 Лицензия: MIT
🖥 Github
Haskell
876
Программируй на Haskell [2019] Уилл Курт
Языки программирования зачастую отличаются лишь отдельными элементами - несколько ключевых слов, библиотек или платформенных решений. Haskell формирует абсолютно новую точку зрения. По мнению пионера программного обеспечения Алана Кэя, смена перспективы может дать 80 баллов IQ, и разработчики на Haskell соглашаются с исключительными преимуществами мышления в стиле Haskell: функционального мышления с ориентацией на типобезопасность, математическую определённость и многое другое. В этой практической книге вы будете учиться именно этому. «Программируй на Haskell» проведёт вас через короткие уроки, примеры и упражнения, разработанные так, чтобы вы смогли прочувствовать Haskell. В ней вы найдёте кристально ясные иллюстрации и легко сможете практиковаться под её руководством. Вы будете писать и тестировать дюжины интересных программ, а также погрузитесь в различные модули и библиотеки.
Haskell - книги, курсы, гайды и уроки
876
🚀 Виталий Брагилевский: интервью с автором Haskell in Depth
https://www.youtube.com/watch?v=F4hXp0-vgPY&pp=ygUGaGFza2Vs
Haskel
876
⚡️ PostgREST создает полноценное RESTful API на основе любой существующей базы данных PostgreSQL.
**Производительность:**
Скорость работы обеспечивается за счет трех факторов. Во-первых, сервер написан на Haskell с использованием HTTP Warp (это компилируемый язык с легковесными потоками). Во-вторых, он передает максимальное количество вычислений базе данных, включая:
- Сериализацию ответов JSON прямо в SQL,
- Валидацию данных,
- Механизмы авторизации,
- Комбинированный подсчет строк и фильтрацию,
- Возврат всех данных одной командой (*).
И наконец, PostgREST эффективно взаимодействует с базой данных через библиотеку Hasql:
- Поддерживает пул соединений с базой данных,
- Использует бинарный протокол PostgreSQL,
- Работает без сохранения состояния, что позволяет легко масштабироваться горизонтально.
▪ Github
@haskell_tg
876
Они "одинаковые"? кто решит тот лучший 💪
Для двух массивов
a и b напишите функцию comp(a, b) (или compSame(a, b)), которая проверяет, есть ли в этих массивах "одинаковые" элементы с одинаковой кратностью (кратность члена - это количество раз, которое он встречается). В данном случае "одинаковые" означает, что элементы в b - это элементы в квадрате a, независимо от порядка.
Examples:
Допустимые массивы
a = [121, 144, 19, 161, 19, 144, 19, 11] b = [121, 14641, 20736, 361, 25921, 361, 20736, 361]
comp(a, b) возвращает true, потому что в b 121 - квадрат 11, 14641 - квадрат 121, 20736 - квадрат 144, 361 - квадрат 19, 25921 - квадрат 161, и так далее. Это становится очевидным, если записать элементы b в терминах квадратов:
a = [121, 144, 19, 161, 19, 144, 19, 11]
b = [11*11, 121*121, 144*144, 19*19, 161*161, 19*19, 144*144, 19*19]
Некорректные массивы
Если, например, мы изменим первое число на что-то другое, comp больше не будет возвращать true:
a = [121, 144, 19, 161, 19, 144, 19, 11]
b = [132, 14641, 20736, 361, 25921, 361, 20736, 361]
comp(a,b) возвращает false, потому что в b 132 не является квадратом какого-либо числа из a.
a = [121, 144, 19, 161, 19, 144, 19, 11]
b = [121, 14641, 20736, 36100, 25921, 361, 20736, 361]
comp(a,b) возвращает false, потому что в b 36100 не является квадратом какого-либо числа из a.
Примечания
🟡a или b могут быть [] или {} (все языки, кроме R, Shell).
🟡a или b могут быть nil или null или None или nothing (кроме C++, COBOL, Crystal, D, Dart, Elixir, Fortran, F#, Haskell, Nim, OCaml, Pascal, Perl, PowerShell, Prolog, PureScript, R, Racket, Rust, Shell, Swift).
🟡Если a или b равны nil (или null, или None, в зависимости от языка), проблема не имеет смысла, поэтому возвращается false.
#6kyu
🔗 Перейти к задаче
@haskell_tg876
🖥 Учебник по Haskell
Добро пожаловать в мир функционального программирования, строгой типизации, чистых функций, ленивых вычислений и классов типов.
Всё это вы найдёте в замечательном языке программирования Haskell.
Если вы просто где-то слышали о Haskell, и пока это описание ни о чём не говорит, ничего, об этом и о многом другом вы узнаете со страниц этой книги.
Haskell был основан на исходе восьмидесятых, как общий язык для программистов, интересующихся функциональным программированием и ленивой стратегией вычислений.
Это свободный язык, он разрабатывается комитетом разработчиков, программистов, математиков, информатиков, и просто увлечённых программированием людей. Основной компилятор языка GHC разрабатывается в Microsoft Research, но несмотря на это легко доступен в интернет. Вы можете установить его через Haskell Platform (для начинающих) или напрямую с сайта GHC (для гиков и любителей квестов). Ещё нам понадобится редактор с подсветкой синтаксиса Haskell.
Подойдёт простой gedit или более тяжёлые vim и Emacs. Есть и IDE для Haskell. Это Leksah, но пока ещё она совсем юная.
Итак, устанавливаем компилятор GHC подбираем редактор по вкусу и в добрый путь!
📚 Учебник
@haskell_tg
876
🔥 Часто задаваемые вопросы по работе с Haskell
https://www.haskellforall.com/2024/11/the-haskell-inlining-and-specialization.html
Haskel
876
🖥 Большой бесплатный практический курс по Haskell MetaLamp
Этот ресурс создан, чтобы предложить вам тестовые задания для изучения Haskell на пркатике.
⚡️ Программа обучения полностью открыта и доступна бесплатно для всех.
Всего заданий пять, и они достаточно объёмные.
🕘 Даже при интенсивном темпе прохождения курса потребуется примерно 5 месяцев.
Задания нацелены на систематическое освоение основ и принципов Haskell разработки.
Одной из самых грубых ошибок при обучении является стремление сразу погрузиться в сложные практические задачи и начать осваивать множество высокоуровневых технологий (таких как веб-фреймворки), требующих значительного времени на изучение документации. Но без прочного фундамента лучше не углубляться в подобные темы 😊
Поэтому вы начнете с основ: изучение самого языка, ключевых шаблонов проектирования и архитектурных принципов. После этого перейдете к самым простым технологиям ( веб-серверам, примитивным обёрткам для работы с базами данных и т.п.).
Завершающим этапом становится масштабная переработка кода на основе множества различных источников и анализ ваших GitHub-репозиториев с созданием issue-заданий.
🌟 Кроме того, авторы поддерживают подход, согласно которому новичкам не следует сразу включаться в реальные проекты до тех пор, пока они не выполнят несколько своих собственных проектов размером хотя бы на 2–3 тысячи строк кода.
Погружаясь слишком рано в реальный проект, существует высокий риск потеряться в сложном и незнакомом коде, утратить мотивацию, а самое важное — приобрести фрагментарный и бессистемный опыт, поскольку задачи будут крайне специфическими, а процесс обучения — неравномерным.
В результате, даже если стажёр сохранит свою мотивацию, его знания окажутся менее глубокими, чем у коллеги, который начал с нуля и последовательно выполнил несколько самостоятельных проектов.
Эта стажировка должна стать отличным опытом для вас!
🖥 Курс
@haskell_tg
876
✔️ Testcontainers
Библиотека предоставляет удобный API для запуска Docker-контейнеров и позволяет разработчикам программно определять контейнеры, которые следует запускать как часть теста, и очищать эти ресурсы после завершения теста. На текущий момент поддерживается в Haskell, Java, Go, .NET, Python, Node.js, Rust.
https://www.testcontainers.org/
@haskell_tg
876
Haskell Еженедельный новостной дайджест
Haskell 449 http://haskellweekly.news/issue/449.html
@haskell_tg
876
🖥 The Haskell School of Music: From Signals to Symphonies
Авторы: Paul Hudak, Donya Quick
📕 Книга
@haskell_tg - книги, курсы, гайды и уроки
876
📕 Effective Haskell: Solving Real-World Problems with Strongly Typed Functional Programming
Автор: Rebecca Skinner (2023)
Используйте мощь языка Haskell в своих программах. Используйте такие мощные возможности, как преобразования монад и семейства типов, для создания полезных приложений.
Реализуйте преимущества чисто функционального языка, например, защитите свой код от побочных эффектов.
Безбоязненно управляйте параллельными процессами. Применяйте функциональные методы для работы с базами данных и построения RESTful-сервисов.
Книга поможет не увязнуть в теории, а научиться применять передовые концепции программирования для решения реальных задач.
📌 Книга
@haskell_tg - книги, курсы, гайды и уроки
876
⚡️ О Haskell по-человечески версия 2.1
Книга создана с помощью практичного Markdown, блистательного Materialize, впечатляющего Hakyll, элегантного Clay, гибкого BlazeHtml и мощного pandoc.
И разумеется, всё это связано воедино силою Haskell. Книга написана при поддержке русскоязычного сообщества Haskell-разработчиков.
🤓 Книга
Haskel
876
🔥 Rainbow Brackets — плагин для IDE, основанных на IntelliJ IDEA, который раскрашивает любые скобки
Поддерживаемые языки: Java, Scala, Clojure, Kotlin, Python, Haskell, Agda, Rust, JavaScript, TypeScript, Erlang, Go, Groovy, Ruby, Elixir, ObjectiveC, PHP, C#, HTML, XML, SQL, Apex language.
876
+1
🌟 ProLLM: бенчмарк на компетентность языковых моделей в программировании.
Разработчик и автор корпоративного code со-pilot Toqan и FinBERT pfgecnbk запустил публичный Leaderbord бенчмарка ProLLM, в котором языковые модели открытого и закрытого типа тестируются на выполнения различных задач в области программирования:
🟠сoding assistant, создание кода на 27 языках, включая R, ассемблер, haskell, delhi и ada;
🟠StackUnseen, вопросы и ответы из неопубликованных в датасетах данных Stack Overflow за последние 3 месяца;
🟠вызов функций, оценка способности LLM интерпретировать запросы и вызывать соответствующие функции с правильными параметрами;
🟠SQL Disambiguation (только на Португальском языке), оценка того, как тестируемая модель выявляет двусмысленность запроса SQL и определяет, когда требуется уточнение;
🟠извлечение сущностей (только на Польском языке), дает представление об общей эффективности извлечения сущностей и маркировки LLM на непопулярных языках.
Помимо узкоспециализированных тестов, бенчмарк выполняет несколько общих тестов: Q&A Assistant, Summarization и LLM as a Judge.
На сегодняшний день возможность самостоятельного тестирования моделей этим бенчмарком не реализована, но разработчики открыты для диалога в вопросе корпоративного применения своей системы оценки, с ними можно связаться через форму на сайте.
Toqan ProLLM Leaderboard
#AI #LLM #ML #Benchmark
876
XMonad
Динамически мозаичный оконный менеджер X11, написанный и настроенный на Haskell
▫️Очень стабильный, быстрый, маленький и простой.
▫️Автоматическое размещение окон и управление ими
▫️Первоклассная поддержка клавиатуры: мышь не нужна
▫️Полная поддержка мозаичного размещения окон на многоэкранных дисплеях.
▫️Полная поддержка плавающих окон, вкладок и декорированных окон.
▫️Полная поддержка утилит GNOME и KDE.
▫️Поддержка XRandR для поворота, добавления или удаления мониторов
▫️Алгоритмы компоновки для каждого рабочего пространства
▫️Пользовательские строки состояния для каждого экрана
▫️Поддержка композитинга
▫️Мощная, стабильная настройка и реконфигурация на лету
GitHub: https://github.com/xmonad/xmonad
876
Найдите средний элемент
В рамках этого Ката вам нужно создать функцию, которая, получив триплет, возвращает индекс числового элемента, находящегося между двумя другими элементами.
На вход функции будет подан массив из трех разных чисел (в Haskell: кортеж).
Например:
gimme([2, 3, 1]) => 0
2 - это число, которое находится между 1 и 3, а индекс 2 во входном массиве равен 0.
Другой пример (просто чтобы было понятно):
gimme([5, 10, 14]) => 1
10 - это число, которое находится между 5 и 14, а индекс 10 во входном массиве равен 1.
#7kyu
🔗 Перейти к задаче