This post builds Haskell types for modeling music as continuous, time-aware signals. It defines an Event newtype over Maybe and a Segment type representing continuous function pieces with optional interesting values. A custom combine function replaces Applicative for Segment, since interesting values must stay fixed once set. The Signal type wraps a base function plus sorted Segments and does get an Applicative instance. The post then introduces a signal function type SF with Category and Arrow instances, enabling proc notation to wire signals together like a modular synthesizer, including a clampOctave function that can look 0.5 measures into the future.
Source: https://reasonablypolymorphic.com/blog/music-arrows/index.html. 8 Sync News only summarizes and links out; content copyright belongs to the authors and original sources.
Read the news here, practice coding, follow structured courses and train for IELTS on our sibling products — all connected through one 8 Sync account.
The ecosystem home: product overviews, blog and full pricing.
ExploreLearn along a clear roadmap: videos, auto-graded quizzes, certificates and mentors who ship for a living.
View the roadmap1,000 DSA problems in Vietnamese, auto-graded across 7 languages — many FREE, right in your browser.
Practice for freeAI grading for all four IELTS skills with detailed rubric feedback.
Try it freeA 22 MB AI IDE for Vietnamese devs.
Download freeOrganizational memory for AI agents.
ExploreAI that staffs your Fanpage and qualifies leads for you.
Try itBài viết Practical Rust API Design tập trung vào nguyên tắc thiết kế API cho hệ thống ergonomic bằng ngôn ngữ Rust. Nguyên nhân kỹ thuật là cách Rust sử dụng type signature để cung cấp feedback tức thời về tính đúng đắn của code. Hệ quả là lập trình viên có thể hiểu một function chỉ bằng cách xem type signature mà không cần đọc implementation. Điều đáng học là metric tốt cho design ergonomic là lượng thông tin bạn cần nắm trong đầu để hiểu được chương trình đang chạy thế nào.
Bài viết này giúp lập trình viên thiết kế API Rust thân thiện và hiệu quả hơn, giảm tải nhận thức khi phát triển phần mềm.
Bối cảnh hiện nay có nhiều áp lực trong ngành công nghệ khiến nhiều lập trình viên quên đi niềm vui cốt lõi. Nguyên nhân kỹ thuật là sự phát triển quá nhanh của các framework và công cụ như React, Vue.js, Kubernetes khiến lập trình viên luôn phải cập nhật kiến thức mới. Hệ quả là nhiều người cảm thấy kiệt sức và mất đi niềm vui sáng tạo ban đầu. Điều đáng học là hãy nhớ lại lý do đầu tiên đã khiến bạn chọn nghề lập trình, dù bạn đang sử dụng Go, Rust hay Python. Việc duy trì đam mê sẽ giúp bạn trở thành lập trình viên xuất sắc hơn trong dài hạn.
Bài viết nhắc nhở lập trình viên về niềm vui cốt lõi trong lập trình giúp duy trì đam mê và động lực trong công việc.
Trong bối cảnh LLMs có thể giải quyết các bài tập Haskell tiêu chuẩn, bài viết thảo thách thức trong thiết kế khóa học functional programming. Nguyên nhân kỹ thuật là các LLM như GPT-4 đã đạt trình độ hiểu sufficiently deep về kiểu dữ liệu và hệ thống kiểu của Haskell. Hệ quả là sinh viên có thể sao chép giải mà không hiểu bản chất, đe dọa mục tiêu giáo dục. Điều đáng học là tác giả đang thiết kế lại khóa học để embrace LLMs như công cụ hỗ trợ, tập trung vào các bài tập đòi hỏi tư duy phản biện và hiểu biết sâu về monad và category theory thay vì kỹ năng lập trình cơ bản.
Bài viết này giải thích cách LLMs đang thay đổi việc giảng dạy ngôn ngữ Haskell và tại sao nên chấp nhận chúng trong quá trình học tập.
This issue of Haskell Weekly rounds up community news and projects. Robert Krook shares a survey of distributed Haskell systems adapted from his PhD thesis. Abhinav Sarkar extends his BlogShake static site generator with per-tag Atom feeds. Jonathan Knowles investigates a Haddock hyperlink bug spanning GHC 9.8 to 9.14. GHC musl Docker manifests now use alpine:3.24.3 for security fixes, and nonempty-vector hits version 1.0. The Haskell Foundation announces AmeriHac 2027, a two-day hackathon hosted by Jane Street in Manhattan on February 6-7, and calls for volunteers for a new haskell.org working group.
This post designs the core types for a music representation system meant to express any music from any culture or era. It proposes composable Horizontal (time), Vertical (simultaneity), and content types like Pitch and Waveform, so combinations like 'Horizontal Pitch' give a simple tune and 'Vertical (Horizontal Pitch)' gives counterpoint. The author introduces a Signal type that tries to be both continuous (a function of time) and discrete (tracking specific times of interest), acknowledging this is logically shaky since a Signal of Events can still be densely packed rather than sparse. No clean fix is offered yet; the next post will cover signal functions using Arrows.
This post outlines a personal project to build a constructive, combinator-based theory of music, inspired by the 'Composing Contracts' paper and Brent Yorgey's diagrams library. The goal is a system that can express any music from any culture or era, including styles that don't yet exist. It must be easy to get good results from, and understanding it should teach you about music. The author rejects handing the problem to an LLM or probabilistic model, and argues most existing music theory only analyzes music rather than offering generative techniques. The next post will cover the denotative elements of music.
GHC now has a policy for AI-assisted contributions. We examine the rules, the debate behind them, and what they mean for Haskell contributors.
A functional programming exploration tackles how to attach durations to musical notes in a Signal-based music system. Instead of hardcoding durations, the approach derives them from two zipped event streams: one marking note beginnings and one marking changes, where a note spans until whichever comes next. This design accidentally reproduces the concept of a musical voice, a single-note-at-a-time instrument line. The author notes that durations could then be driven automatically from a parameter like musical tension, something they understand almost no DAWs currently support as an automation target.
Loading comments…