Tim Thornton is a q and web developer and functional programming enthusiast. Working at FD Labs (formerly Bedarra Research Labs), Tim spends his days applying vector programming to various data analysis challenges, primarily within data visualization. His interest in type theory motivated his undergraduate thesis designing a static refinement type system for q.
YOW! Lambda Jam 2016 Brisbane
Data Analysis with Vector Functional Programming
Vector / array functional programming languages have been around for a long time, beginning with the introduction of APL. Modern dialects of APL such as j, k, and q offer a radical paradigm of functional programming wherein arrays are at the forefront of computation, and through the use of specific higher-order functions known as ‘adverbs’, programmers can concisely express complex algorithms and programs without resorting to loops, and rarely resorting to explicit recursion.
This talk will provide an introduction to the paradigm of vector functional programming through the use of the q programming language, a very efficient, interpreted, dynamically-typed vector language from Kx Systems. After giving a brief history of vector languages, select syntax and semantics of the language will be introduced, emphasizing the terse notation as a facilitator of thought, as expressed in Iverson’s Turing Award paper 1. Through small examples of vector and atomic operations, to run-length encoding, key ideas such as verbs and adverbs, atomic vector operations, and array-based functional programming adhering to the “rule” of “no stinking loops” 2 will be demonstrated.
After an introduction to the language, an end-to-end example will be shown within a practical domain for vector functional programming: fast data analysis. The analysis will involve reading data from CSV files, scraping and processing data from the web, joining gathered data, and analysis — all using Q.
The attendee will leave the talk with a basic understanding of the vector functional paradigm, how it may be useful in practical domains, an understanding of array-based thinking (practical in any functional programming language), and hopefully, an appreciation — or at least openness — toward terse and precise syntax.
1 http://www.jsoftware.com/papers/tot.htm 2 http://nsl.com