New slides
I've posted PDFs of slides from some talks I gave a while ago.
First-Class Concurrency in Haskell covers topics in concurrent imperative programming, such as:
Using closures with concurrency primitives to improve your API
How
System.Timeout
worksImplementing the π-calculus, and compiling the λ-calculus to it
This turned out to be far too much material for a one-hour talk, so the slides are probably more valuable than the talk itself. I'm also thinking of expanding the π-calculus bits into a proper blog post at some point.
High-level FFI in Haskell covers tricks for making bindings to C libraries that feel more like native Haskell libraries. Most of the examples are drawn from my hdis86
library . This includes:
Translating C types to idiomatic Haskell types
Passing Haskell functions as C function pointers
Passing
ByteString
s as C buffersAutomatic locking and memory management of library state
Exposing a C library's state machine as a lazy pure function
Bundling a C library with Cabal while also allowing dynamic linking
These slides were available before, in a somewhat strange HTML format. The new PDFs are more portable and I think they look nicer, too.
How I made the slides
I originally wrote the slides in Markdown format and converted them to a S5 slideshow using pandoc. This was a great way to quickly prepare slides, including syntax-highlighted Haskell code. However I ran into a few limitations:
Slide layout depends on window size and screen resolution, rendering my obsessive tweaking useless. In some cases the text would run off the edge of the screen or overlap other elements.
The slides don't work at all in Chromium, as of the S5 version I used initially. I also got reports of issues with other browsers.
I wanted to switch over to Beamer, as I'd seen some very high-quality slides produced using that package. This would also provide a PDF that renders exactly the same on every machine. Fortunately, pandoc can output LaTeX code suitable for Beamer. I can keep using the lightweight syntax of Markdown, and most of my old slide source code works as-is. Once again pandoc handles a tricky problem with ease.
I followed this scheme with a few modifications. For example, pdflatex
was unhappy with slides ("frames") containing verbatim
text environments. The solution was to declare all frames as "fragile", whatever that means:
\begin{frame}[fragile]
Recent versions of pandoc accept the --listings
option and will use the LaTeX listings
package to render nicely-formatted source code. This article was helpful for configuring listings
. The default Haskell style has a rather odd definition of what counts as a keyword, so I wrote a custom language definition. I ended up with this LaTeX header, which you can pass to pandoc using -H
:
\usepackage{listings}
\usepackage{color}
\lstdefinelanguage{Haskell_mod}{
otherkeywords={.., ::, |, <-, ->, @, ~, =, =>},
morekeywords={
case, class, data, default, deriving, do, else,
foreign, if, import, in, infix, infixl, infixr,
instance, let, module, newtype, of, then, type,
where, _, forall, ccall },
sensitive,
morecomment=[l]--,
morecomment=[n]{\{-}{-\}},
morestring=[b]"
}[keywords,comments,strings]
\lstset{
language=Haskell_mod,
basicstyle=\ttfamily,
keywordstyle=\color[rgb]{0,0,1},
commentstyle=\color[rgb]{0.133,0.545,0.133},
stringstyle=\color[rgb]{0.627,0.126,0.941},
showstringspaces=false,
frame=single
}
The Markdown sources for the slides are available: 1, 2.
My biggest remaining complaint is that I have a lot of explicit spacing commands, e.g. \vspace{1em}
. These are used for logical grouping, and so can't be fully inferred, but maybe there's a better (partial?) solution.
HP printer support 24*7 at HP help number for printer connection and driver issues. HP printer repair and setup ... printer technical support.
ReplyDeleteThanks for sharing such a valuable information.Im very thankful to you that you had given me this opportunity to write on this blog.please visit our website I assure you that it will be very useful for @ Packers And Movers Bangalore
ReplyDeletePackers And Movers Bangalore to Pune
Packers And Movers Bangalore to Chennai
Packers And Movers Bangalore to Noida
Packers And Movers Bangalore to Mumbai
เปิดประสบการณ์ทำเงินไปกับเกมเดิมพันออนไลน์ที่ครบวงจรที่สุด ยกคาสิโนไว้บนเว็บไซต์ ทำเงินได้อย่างเรียงไทม์ไปกับ Dreamgaming casino เว็บคาสิโนที่ดีที่สุด อันดับ 1 ของเอเชีย เข้าเว็บไซต์ เว็บไซต์ที่ออกเเบบมารองรับผู้เล่นที่ชื่นชอบเกมเดิมพันออนไลน์ ทันสมัย ครบวงจร เข้าถึงง่าย ใช้งานสะดวก รวมเกมเดิมพันออนไลน์ไว้ที่นี่มากกว่า 1000 เกม ครบจบในเว็บไซต์เดียว.
ReplyDeleteGutt Websäit : Zonahobisaya
ReplyDeleteGutt Websäit : Zonahobisaya
Gutt Websäit : One Piece
Gutt Websäit : Zonahobisaya
Gutt Websäit : One Piece
Gutt Websäit : Zonahobisaya
Gutt Websäit : Zonahobisaya
Gutt Websäit : Zonahobisaya
สล็อตเว็บตรง โบนัสแตกบ่อยฝากถอนไม่มีขั้นต่ำ ผ่านระบบอัตโนมัติสะดวกสบายเล่นได้ทุกที่เกมสล็อตทำเงินให้คุณแบบไม่อั้น PG SLOT เว็บตรงแตกง่าย จัดเต็มทดลองเล่นได้เลยที่ pg-slot.game
ReplyDeleteเว็บไซต์ไชต์ตรง ไม่ผ่านเอเย่นต์ เรา คัดสรรถึงแม้ว่า เกม สล็อต แจ็คพอต แตกหลายครั้ง เล่นสล็อตได้เงินจริง รวม เว็บ สล็อต PG รองรับการใช้งาน ทั้งคอมพิวเตอร์ โทรศัพท์มือถือ
ReplyDelete"รีวิวเว็บที่เล่นจริง ทำเงินได้ไว magame88 เล่นได้เพียงไม่กี่นาที ก็สามารถทำเงินได้แล้ว สล็อตเว็บใหม่ รวมเกมมากมาย ทำเงินได้สูงสุดหลักแสนบาท เล่นเวลาไหนก็สามารถทำเงินได้ เว็บทำเงินโบนัสแตกง่าย ถอนไวมาก
ReplyDelete"