{"guid":"367c2883-a31c-4aa2-bc41-2345b71cf9d3","title":"Haskell :heart: Lua","subtitle":null,"slug":"bob2022-haskell-hearts-lua-krewinkel","link":"https://bobkonf.de/2022/krewinkel.html","description":"Haskell and Lua share some similarities, like\n\tsupport for functional programming, but are otherwise very\n\tdifferent. Nonetheless, the two complement each other in\n\tinteresting ways. This is demonstrated by pandoc, the\n\tuniversal document converter, which is written in Haskell and\n\tuses Lua as extension language. Pandoc’s behavior can be\n\tmodified through Lua filters, custom readers, and custom\n\twriters, leveraging the power of Haskell and flexibility of\n\tLua.\n\n        While combining the two languages is made easy by the hslua\n        package, the internals of that package are not always\n        straight-forward and a testament to the powers of Haskell’s\n        Foreign Function Interface. We will take a look at the\n        encountered impedance mismatch and how it was overcome,\n        compare it to efforts in adjacent languages like OCaml, and\n        see how hslua can be used to expose application internals to\n        scripts effectively and conveniently.\n\n\t","original_language":"eng","persons":["Albert Krewinkel"],"tags":["bob2022","104","2022","Talk","BOB","BOBKonferenz"],"view_count":123,"promoted":false,"date":"2022-03-11T15:05:00.000+01:00","release_date":"2022-09-05T00:00:00.000+02:00","updated_at":"2026-03-03T08:15:06.322+01:00","length":2132,"duration":2132,"thumb_url":"https://static.media.ccc.de/media/events/bobkonf/2022/104-367c2883-a31c-4aa2-bc41-2345b71cf9d3.jpg","poster_url":"https://static.media.ccc.de/media/events/bobkonf/2022/104-367c2883-a31c-4aa2-bc41-2345b71cf9d3_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/bobkonf/2022/104-367c2883-a31c-4aa2-bc41-2345b71cf9d3.timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/bobkonf/2022/104-367c2883-a31c-4aa2-bc41-2345b71cf9d3.thumbnails.vtt","frontend_link":"https://media.ccc.de/v/bob2022-haskell-hearts-lua-krewinkel","url":"https://api.media.ccc.de/public/events/367c2883-a31c-4aa2-bc41-2345b71cf9d3","conference_title":"BOB Konferenz 2022","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022","related":[],"recordings":[{"size":81,"length":2132,"mime_type":"video/webm","language":"eng","filename":"bob2022-104-eng-Haskell_heart_Lua_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-09-05T15:03:13.288+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/webm-hd/bob2022-104-eng-Haskell_heart_Lua_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/61513","event_url":"https://api.media.ccc.de/public/events/367c2883-a31c-4aa2-bc41-2345b71cf9d3","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":40,"length":2132,"mime_type":"video/webm","language":"eng","filename":"bob2022-104-eng-Haskell_heart_Lua_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-09-05T14:48:31.850+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/webm-sd/bob2022-104-eng-Haskell_heart_Lua_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/61506","event_url":"https://api.media.ccc.de/public/events/367c2883-a31c-4aa2-bc41-2345b71cf9d3","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":41,"length":2132,"mime_type":"video/mp4","language":"eng","filename":"bob2022-104-eng-Haskell_heart_Lua_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2022-09-05T14:40:04.203+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/h264-sd/bob2022-104-eng-Haskell_heart_Lua_sd.mp4","url":"https://api.media.ccc.de/public/recordings/61501","event_url":"https://api.media.ccc.de/public/events/367c2883-a31c-4aa2-bc41-2345b71cf9d3","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":32,"length":2132,"mime_type":"audio/mpeg","language":"eng","filename":"bob2022-104-eng-Haskell_heart_Lua_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2022-09-05T14:38:03.854+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/mp3/bob2022-104-eng-Haskell_heart_Lua_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/61499","event_url":"https://api.media.ccc.de/public/events/367c2883-a31c-4aa2-bc41-2345b71cf9d3","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":16,"length":2132,"mime_type":"audio/opus","language":"eng","filename":"bob2022-104-eng-Haskell_heart_Lua_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2022-09-05T14:36:26.160+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/opus/bob2022-104-eng-Haskell_heart_Lua_opus.opus","url":"https://api.media.ccc.de/public/recordings/61497","event_url":"https://api.media.ccc.de/public/events/367c2883-a31c-4aa2-bc41-2345b71cf9d3","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"},{"size":55,"length":2132,"mime_type":"video/mp4","language":"eng","filename":"bob2022-104-eng-Haskell_heart_Lua_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2022-09-05T14:36:24.115+02:00","recording_url":"https://cdn.media.ccc.de/events/bobkonf/2022/h264-hd/bob2022-104-eng-Haskell_heart_Lua_hd.mp4","url":"https://api.media.ccc.de/public/recordings/61496","event_url":"https://api.media.ccc.de/public/events/367c2883-a31c-4aa2-bc41-2345b71cf9d3","conference_url":"https://api.media.ccc.de/public/conferences/bobkonf2022"}]}