Lambdaheads: Unterschied zwischen den Versionen

aus Metalab Wiki, dem offenen Zentrum für meta-disziplinäre Magier und technisch-kreative Enthusiasten.
Zur Navigation springenZur Suche springen
 
(69 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
<div style="float:right; margin: 2em;"> http://asset.soup.io/asset/1196/8300_0b12.jpeg <br /><small style="text-align: right">Source: [http://soup.fnordicwalking.de/post/84983706/my-head-is-now-a-lambda-expression soup.fnordicwalking.de]</small><br/><br/>
+
{{Usergroup
 
+
|logo=Lambdaheads-Logo.jpg
__TOC__
+
|organizer=[[User:dio|dio]]; vormals [[User:citizen428|citizen428]] und [[User:epsilonhalbe|epsilonhalbe]]
 
+
|email=
</div>
+
|irc=
 
+
|startdate=
 +
|homepage=
 +
|topic=Funktionale Programmierung
 +
|status=active
 +
|meetings=3. Mittwoch im Monat
 +
|targetgroup=Jeder mit Interesse an funktionaler Programmierung, vom Mathematiker zum Software-Entwickler.
 +
|description=Ein regelmäßiges Treffen von Leuten die sich für [[wde:Lisp|Lisp-Dialekte]] und [[wde:Funktionale_Programmierung|funktionale Programmierung]] im Allgemeinen interessieren.
 +
}}
 
= WTF =
 
= WTF =
 
Ein regelmäßiges Treffen von Leuten die sich für [[wde:Lisp|Lisp-Dialekte]] und [[wde:Funktionale_Programmierung|funktionale Programmierung]] im Allgemeinen interessieren.
 
Ein regelmäßiges Treffen von Leuten die sich für [[wde:Lisp|Lisp-Dialekte]] und [[wde:Funktionale_Programmierung|funktionale Programmierung]] im Allgemeinen interessieren.
Zeile 10: Zeile 17:
 
= Kommende Events =
 
= Kommende Events =
  
Nächster Termin = alter Termin + 28 Tage
+
Voraussichtlich jeder 3te Mittwoch im Monat
  
'''Achtung:''' Spezialtermin im <del>Februar</del> <del>März</del> <del>April</del> <del>Mai</del> mit einem Vortrag von Microsoft zu F#, Termin tba. - Wird das wirklich noch was? ☹ -- Keine Ahnung, MS hat sich lange nicht mehr gemeldet.
+
== nächste reguläre Termine ==
 +
=== 2017-07-19 Wed 19:30-22:00 (Library) ===
 +
==== Topic: TBD ====
  
== nächster regulärer Termin ==
+
Termin: Die Organisation der Lambdaheads wurde auf [http://meetup.com/Lambdaheads meetup] verschoben - bitte dort die Themenlage ansehen die Announcements passieren ca 1-2 Wochen vor dem eigentlichen Termin.
 
 
Termin: Mo, '''2012-07-23''' ab 19:30 Uhr in der Bibliothek [[Lage|im Metalab]]
 
 
 
=== Programm ===
 
 
 
* [https://github.com/schani/clojurec ClojureC] Status Report von [[Benutzer:Mark.probst|schani]]
 
* insert blah here
 
 
 
=== Teilnehmer ===
 
 
 
* [[Benutzer:Mark.probst|schani]]
 
* [[Benutzer:Epsilon.halbe|ε/2]]
 
 
 
<!--
 
* [[Benutzer:Daxim]]
 
* [[User:Citizen428|citizen428]]
 
-->
 
  
 
== Vortragswünsche ==
 
== Vortragswünsche ==
 +
* NixOS - A linux with functional package manager ([[Benutzer:Epsilon.halbe|ε/2]], [[phaebz]])
 +
* Elm - Functional Reactive Programming ([[Benutzer:Epsilon.halbe|ε/2]])
 +
* Cryptol - a DSL for cryptography ([[Benutzer:Epsilon.halbe|ε/2]])
 
* Coq - a proof assistant ([[Benutzer:Epsilon.halbe|ε/2]]?)
 
* Coq - a proof assistant ([[Benutzer:Epsilon.halbe|ε/2]]?)
 
* Interfacing to SDL/Games in functional languages ([http://prog21.dadgum.com/23.html Purely Functional Retro Games])
 
* Interfacing to SDL/Games in functional languages ([http://prog21.dadgum.com/23.html Purely Functional Retro Games])
 
* Readable/non-trivial Haskell Examples  ([[Benutzer:Epsilon.halbe|ε/2]], e.g. Pandoc)
 
* Readable/non-trivial Haskell Examples  ([[Benutzer:Epsilon.halbe|ε/2]], e.g. Pandoc)
 
* How Darcs works
 
* How Darcs works
* Two λ enter, one λ leaves: [http://snapframework.com/ Snap] vs. [http://yesodweb.com/ Yesod]
+
* Two λ enter, one λ leaves: [http://snapframework.com/ Snap] vs. [http://yesodweb.com/ Yesod] ([[Benutzer:Epsilon.halbe|ε/2]])
* Emacs
+
* Emacs ([[Benutzer:Epsilon.halbe|ε/2]])
 +
* http://lambdacube3d.com/
 +
__TOC__
  
 
== Vortragsvorschläge ==
 
== Vortragsvorschläge ==
Zeile 60: Zeile 57:
  
 
= Kontakt =
 
= Kontakt =
* [[User:Citizen428|citizen428]]
+
* [[User:dio|dio]]
 +
<!--
 +
* [[User:Citizen428|citizen428]] - derzeit auf Weltreise
 +
* [[User:Epsilon.halbe|epsilonhalbe]]
 +
-->
  
 
= Frühere Events =
 
= Frühere Events =
 +
=== 2016-06-08 Wed 19:30-22:30 (Library) ===
 +
==== Topic: Haskell/Purescript and maybe some Erlang ====
 +
* Benefits and Problems of using Haskell and Purescript in this day and age.
 +
 +
== 2016-05-11 Wed 19:30 (Library) ==
 +
 +
==== Topic: Taming the parallel beast ====
 +
 +
* Perl6
 +
** Concurrency primitives, basics for parallelism
 +
** Promises/hyper-operators ...
 +
 +
* Haskell
 +
** Accelerate - complicated but powerful library to do GPU operations in a high level language
 +
** [https://github.com/epsilonhalbe/accelerate-typelits accelerate-typelits]
 +
 +
==2016-03-09==
 +
 +
* 19:30 '''Parsing in Haskell'''
 +
** [http://www.meetup.com/Lambdaheads/events/228735477/ meetup]
 +
** [https://github.com/epsilonhalbe/Talks/tree/master/20160309-Parsing slides(github)]
 +
 +
==2016-02-10==
 +
 +
* 19:30 '''Category Theory''' part 2
 +
** [http://www.meetup.com/Lambdaheads/events/227402479/ meetup]
 +
** [https://github.com/epsilonhalbe/Talks/tree/master/20151209-LH-Categories slides]
 +
** a neat trick of encoding numbers on a type level, [https://gist.github.com/mcschroeder/b59c7859db87f27b812f gist] by michael schröder
 +
 +
==2016-01-20==
 +
 +
* 19:00 '''Functional Calisthenics''' - by Peter 'codecop' Kofler
 +
** [http://www.meetup.com/Lambdaheads/events/226571385/ meetup]
 +
** [https://github.com/epsilonhalbe/lambdadojo github: solution in haskell]
 +
 +
==2015-12-09==
 +
* '''category theory''' part 1 [http://www.meetup.com/Lambdaheads/events/226089384/ meetup]
 +
* [https://github.com/epsilonhalbe/Talks/tree/master/20151209-LH-Categories slides]
 +
 +
==2015-11-11==
 +
* '''functional web experience''' [http://www.meetup.com/Lambdaheads/events/226089022/ meetup]
 +
* hdgarood - purescript
 +
* gregor riegler - purescript
 +
* peter - jboss (erlang webframework)
 +
 +
==2015-10-21==
 +
* '''No agenda''' [http://www.meetup.com/Lambdaheads/events/225606983/ meetup]
 +
* skillsmatter conference
 +
* [https://github.com/epsilonhalbe/Talks/tree/master/20151021-LH-Stack haskell stack tool]
 +
* [https://github.com/epsilonhalbe/Talks/tree/master/20151021-LH-Func thinking about function composition/functor/applicative/warm fuzzy things]
 +
 +
==Summer break==
 +
 +
==2015-07-02 special==
 +
* '''Lambda-Calculus/Dependent-Type Theory''' [http://www.meetup.com/Lambdaheads/events/223610012/ meetup] a lecture at the university of vienna dpt. of logic by prof. dana s. scott
 +
* [https://dl.dropboxusercontent.com/u/11887842/scott.7z slides]
 +
 +
==2015-06-10==
 +
* '''Coding dojo - minesweeper kata''' comparing languages (Java, php, haskell(1,2,3) …) [http://www.meetup.com/Lambdaheads/events/222293460/ meetup]
 +
* [https://github.com/epsilonhalbe/minesweeper haskell] martin
 +
* [https://github.com/aschlapsi/FSharpMinesweeper F#] andreas schlapsi
 +
* [http://blog.knatten.org/2011/04/01/the-minesweeper-kata-in-15-lines-of-c/ c]
 +
* [https://github.com/queltos/minesweeper-kata-dart dart]
 +
* [https://bitbucket.org/pkofler/minesweeper-kata java]
 +
 +
==2015-05-13==
 +
* '''Purescript (and maybe some haskell)''' [http://www.meetup.com/Lambdaheads/events/222292794/ meetup]
 +
* presentation by Gregor Riegler [http://sleepomeno.github.io/purescript-lambdaheads/#/ slides]
 +
 +
==2015-04-08==
 +
* '''Fun with Functions''' - Haskell tutorial part 3
 +
 +
==2015-02-11==
 +
 +
* 19:00 '''Power of polymorphism''', a beginner's tutorial for haskell [http://www.meetup.com/Lambdaheads/events/220385939/ meetup] (part 2)
 +
 +
 +
== 2015-01-14 ==
 +
 +
* 19:00 installing Haskell/git (if necessary)
 +
* 19:30 '''Types and Typos''', a beginner's tutorial for haskell with a focus on error messages - see more on [http://www.meetup.com/Lambdaheads/events/219474571/ meetup]
 +
 +
== 2014-12-10 ==
 +
 +
* no meeting has happened
 +
 +
== 2014-11-12 ==
 +
 +
* Web scraping with Haskell
 +
* Next steps in writing a reporting tool in Haskell
 +
 +
== 2014-10-08 ==
 +
 +
* A gentle intro to swift - many thanks to the [[Cocoaheads|Cocoaheads]] and Mikael
 +
* Drawing with Haskell (TagCloud, Calendar) a first step in building a reporting tool with haskell
 +
 +
== 2014-09-10 ==
 +
 +
* Record Syntax, Lenses and Prisms - Part 2 ([http://twitter.com/epsilonhalbe @epsilonhalbe])
 +
 +
== 2014-08-13 ==
 +
 +
* Record Syntax, Lenses and Prisms - Functional getters, setters and a bit more ([http://twitter.com/epsilonhalbe @epsilonhalbe])
 +
* STM with Finalizers ([http://twitter.com/schrototo @schrototo]), fork auf [https://github.com/mcschroeder/ghc github] [
 +
 +
== 2014-07-09 ==
 +
 +
* Monads: a presentation of the Blogpost by Dan Piponi
 +
* Gespräche über allerlei Themen
 +
** Elm Talk bei [http://www.infoq.com/presentations/elm-reactive-programming InfoQ] in dem Evan Czaplicki in der letzten Viertelstunde eine Supermario from Scratch demo gibt
 +
** Tolle Dinge die man mit Haskell machen kann: [http://music-suite.github.io/docs/ref/ Musik], [http://projects.haskell.org/diagrams Diagramme] u.v.m.
 +
** Idris a.k.a. rocket science [https://www.youtube.com/watch?v=fVBck2Zngjo Youtube]
 +
 +
== 2014-06-09 ==
 +
 +
* [http://cryptol.net/ Cryptol] a language for cryptography released by Galois.inc
 +
 +
== 2014-05-14 ==
 +
 +
* Clojure
 +
** Installing Clojure (wenn notwendig)
 +
** Lösen der Clojure Koans - so weit wie es uns gefällt
 +
* Martin berichtet von den Linuxwochen wo er einen Vortrag zum Thema Haskell gehalten haben wird
 +
 +
== 2014-04-09 ==
 +
 +
* <strike>A* algorithmus in Haskell</strike>
 +
* Testen in Haskell (Unit Tests, Property Tests, Proof, Criterion, Profiler) [https://github.com/epsilonhalbe/Lambdaheads/tree/master/2014/04 Stuff]
 +
 +
== 2014-03-14 ==
 +
 +
Einführung in Haskell: Buchstaben nach ASCII-Art [https://github.com/epsilonhalbe/Lambdaheads/tree/master/2014/03 Stuff]
 +
 +
http://technologyconversations.com/2014/02/25/java-8-tutorial-through-katas-berlin-clock-easy/
 +
 +
http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html
 +
 +
== 2013-07-16 ==
 +
 +
generators in future ECMAscript (node.js 0.11.2) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators
 +
 +
Python 3
 +
 +
<pre>
 +
def pager(lines, pagelen=60):
 +
    for lineno, line in enumerate(lines):
 +
        yield line
 +
        if lineno % pagelen == 0:
 +
            yield "\f"
 +
 +
for line in pager((range(10000))):
 +
    print(line)
 +
</pre>
 +
 +
Perl 6
 +
 +
<pre>
 +
use v6;
 +
 +
sub pager($lines, $pagelen=60) {
 +
    gather for zip 1..200, $lines -> $lineno, $line {
 +
        take $line;
 +
        take "\f" if $lineno %% $pagelen
 +
    }
 +
}
 +
 +
for pager(1..*, 30) -> $line {
 +
    say $line;
 +
}
 +
</pre>
 +
 +
Haskell
 +
 +
<pre>
 +
pager ::(Show a) => [a] -> Int -> [String]
 +
pager xs n = [if i %% n then show x else "\f" | (x,i) <- zip xs [1..]]
 +
 +
(%%) :: Int -> Int -> Bool
 +
i %% n = (rem i n) /= 0
 +
 +
 +
main :: IO ()
 +
main = putStr ( unlines (pager [1..10000] 60))
 +
</pre>
 +
 +
== 2013-06-18 ==
 +
 +
comb, one of the opposites of join (the other one is split)
 +
 +
<pre>
 +
String.prototype.comb = function(re) {
 +
    // lol type conversion the hacky way
 +
    re = ('' + re)              // now it's a string
 +
        .replace(/^\//, '')    // hack off leading
 +
        .replace(/\/$/, '');    // trailing delimiter
 +
    // no interpolation, no sigils, no sprintf
 +
    return eval('this.match(/(' + re + ')+/g)');
 +
}
 +
</pre>
 +
 +
gather/take construct reimplemented for JS - a replacement for the idiom of declaring a collecting variable and pushing into it occasionally http://perl6.wikia.com/wiki/Gather
 +
 +
<pre>
 +
function gather(fn) {
 +
    var guard = new Array;
 +
    var take = function (items) {
 +
        guard = guard.concat(items);
 +
    };
 +
    fn(take);
 +
    return guard;
 +
};
 +
 +
console.log(
 +
    gather(function(take) {
 +
        for (var i = 0; i <= 10; i++) {
 +
            if (i % 2) {
 +
                take(i);
 +
            }
 +
        }
 +
    })
 +
)
 +
 +
var arr = [];
 +
for (var i = 0; i <= 10; i++) {
 +
    if (i % 2) {
 +
        arr.push(i);
 +
    }
 +
}
 +
</pre>
 +
 +
Haskell example is incomplete
 +
 +
<pre>
 +
gather x = foldr (:) [] x
 +
main = print $ gather [0..10]
 +
</pre>
 +
 +
reimplementation of List::Gen::by http://p3rl.org/List::Gen#by-NUM-LIST (no generators, just list transformation)
 +
 +
<pre>
 +
function by(n, a) {
 +
    var r = new Array;
 +
    while(a.length) {
 +
        r.push(a.splice(0, n));
 +
    };
 +
    console.log(a);
 +
    return r;
 +
};
 +
 +
function by2(n, a) {
 +
    return a.length ? [a.slice(0, n)].concat(by2(n, a.slice(n))) : [];
 +
}
 +
 +
console.log( by2(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) );
 +
console.log( by2(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14]) );
 +
console.log( by2(5, [1,2,3,4]) );
 +
console.log( by2(5, []) );
 +
</pre>
 +
 +
<pre>
 +
// contrib by intval
 +
// divides array into equal arrays, each of size n
 +
function by(n, arr) {
 +
    function byby(n, arr, accum) {
 +
        if(arr.length < 1) {
 +
            return accum;
 +
        }
 +
        var head = [arr.slice(0,n)];
 +
        var tail = arr.slice(n);
 +
        return byby(n, tail, accum.concat(head));
 +
    }
 +
    return byby(n, arr, []);
 +
}
 +
 +
console.log( by(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) );
 +
console.log( by(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14]) );
 +
console.log( by(5, [1,2,3,4]) );
 +
console.log( by(25, []) );
 +
</pre>
 +
 +
== 2013-05-21 ==
 +
 +
A revival to much muttering, fretting and frowning of brows!
 +
 +
* A little tutorial on Monads [[User:Epsilon.halbe|(ε/2)]]
 +
** [https://github.com/epsilonhalbe/MonadTalk SourceCode]
 +
** [[media:MonadTalk.pdf|Slides(pdf)]]
 +
 +
* Func-prog in JS:
 +
** [http://stevelosh.com/blog/2013/03/list-out-of-lambda/ Steve Losh: List out of Lambda]
 +
** [http://www.youtube.com/watch?v=3ujq55fCx6o YouTube Elise Huard: Why functional is the new black -- JSConf EU 2012]
 +
 +
== 2012-10-15 ==
 +
 +
* Coding Challenge: bring your favourite languages, solve a small practical real-world problem from Stack Overflow in a functional fashion, let's hack and learn from each others' solutions [https://github.com/lambdaheads] [https://github.com/epsilonhalbe/Lambdaheads]
 +
 +
http://stackoverflow.com/questions/12872469
 +
 +
== 2012-09-17 ==
 +
 +
* Introduction to Scala von Alex ([[Scala_User_Group]])
 +
 +
== 2012-08-20 ==
 +
 +
- Burrows-Wheeler Transformation aus "R.Bird - Pearls of functional Programming"
 +
* Algorithmus durchbesprechen und
 +
* Ein bischen testen mit QuickCheck
 +
 +
== 2012-07-23 ==
 +
 +
* [https://github.com/schani/clojurec ClojureC] Status Report von [[Benutzer:Mark.probst|schani]]
  
 
== 2012-06-25 ==
 
== 2012-06-25 ==
Zeile 240: Zeile 552:
 
* Functional Programming in Perl 6
 
* Functional Programming in Perl 6
  
[[Kategorie:Veranstaltungen]]
+
[[Kategorie:Usergroups]]
[[Kategorie:Stammtische]]
 
[[Kategorie:UserGroup]]
 

Aktuelle Version vom 14. Juni 2017, 18:21 Uhr


Lambdaheads
Lambdaheads-Logo.jpg
Status: active
Thema: Funktionale Programmierung
Organisator: dio; vormals citizen428 und epsilonhalbe
Treffen: 3. Mittwoch im Monat
Zielgruppe: Jeder mit Interesse an funktionaler Programmierung, vom Mathematiker zum Software-Entwickler.
Inhalt: Ein regelmäßiges Treffen von Leuten die sich für Lisp-Dialekte und funktionale Programmierung im Allgemeinen interessieren.
Zuletzt aktualisiert: 2017-06-14

WTF

Ein regelmäßiges Treffen von Leuten die sich für Lisp-Dialekte und funktionale Programmierung im Allgemeinen interessieren.

Kommende Events

Voraussichtlich jeder 3te Mittwoch im Monat

nächste reguläre Termine

2017-07-19 Wed 19:30-22:00 (Library)

Topic: TBD

Termin: Die Organisation der Lambdaheads wurde auf meetup verschoben - bitte dort die Themenlage ansehen die Announcements passieren ca 1-2 Wochen vor dem eigentlichen Termin.

Vortragswünsche

Vortragsvorschläge

  • Hunchentoot, Web programming, maybe hunchentoot-fcgi (WIP) or Postmodern (japhy)
  • Zippers (citizen428)
  • fold and it's universal mapping property - ein versuch fold kennenzulernen - ε/2
  • Intro to QuickCheck and Software Testing in Haskell (ε/2)
  • Intro to a Clojure Web Framework (Noir semi-done, again citizen428)

Links

Kontakt

Frühere Events

2016-06-08 Wed 19:30-22:30 (Library)

Topic: Haskell/Purescript and maybe some Erlang

  • Benefits and Problems of using Haskell and Purescript in this day and age.

2016-05-11 Wed 19:30 (Library)

Topic: Taming the parallel beast

  • Perl6
    • Concurrency primitives, basics for parallelism
    • Promises/hyper-operators ...
  • Haskell
    • Accelerate - complicated but powerful library to do GPU operations in a high level language
    • accelerate-typelits

2016-03-09

2016-02-10

  • 19:30 Category Theory part 2
    • meetup
    • slides
    • a neat trick of encoding numbers on a type level, gist by michael schröder

2016-01-20

2015-12-09

2015-11-11

  • functional web experience meetup
  • hdgarood - purescript
  • gregor riegler - purescript
  • peter - jboss (erlang webframework)

2015-10-21

Summer break

2015-07-02 special

  • Lambda-Calculus/Dependent-Type Theory meetup a lecture at the university of vienna dpt. of logic by prof. dana s. scott
  • slides

2015-06-10

  • Coding dojo - minesweeper kata comparing languages (Java, php, haskell(1,2,3) …) meetup
  • haskell martin
  • F# andreas schlapsi
  • c
  • dart
  • java

2015-05-13

  • Purescript (and maybe some haskell) meetup
  • presentation by Gregor Riegler slides

2015-04-08

  • Fun with Functions - Haskell tutorial part 3

2015-02-11

  • 19:00 Power of polymorphism, a beginner's tutorial for haskell meetup (part 2)


2015-01-14

  • 19:00 installing Haskell/git (if necessary)
  • 19:30 Types and Typos, a beginner's tutorial for haskell with a focus on error messages - see more on meetup

2014-12-10

  • no meeting has happened

2014-11-12

  • Web scraping with Haskell
  • Next steps in writing a reporting tool in Haskell

2014-10-08

  • A gentle intro to swift - many thanks to the Cocoaheads and Mikael
  • Drawing with Haskell (TagCloud, Calendar) a first step in building a reporting tool with haskell

2014-09-10

2014-08-13

  • Record Syntax, Lenses and Prisms - Functional getters, setters and a bit more (@epsilonhalbe)
  • STM with Finalizers (@schrototo), fork auf github [

2014-07-09

  • Monads: a presentation of the Blogpost by Dan Piponi
  • Gespräche über allerlei Themen
    • Elm Talk bei InfoQ in dem Evan Czaplicki in der letzten Viertelstunde eine Supermario from Scratch demo gibt
    • Tolle Dinge die man mit Haskell machen kann: Musik, Diagramme u.v.m.
    • Idris a.k.a. rocket science Youtube

2014-06-09

  • Cryptol a language for cryptography released by Galois.inc

2014-05-14

  • Clojure
    • Installing Clojure (wenn notwendig)
    • Lösen der Clojure Koans - so weit wie es uns gefällt
  • Martin berichtet von den Linuxwochen wo er einen Vortrag zum Thema Haskell gehalten haben wird

2014-04-09

  • A* algorithmus in Haskell
  • Testen in Haskell (Unit Tests, Property Tests, Proof, Criterion, Profiler) Stuff

2014-03-14

Einführung in Haskell: Buchstaben nach ASCII-Art Stuff

http://technologyconversations.com/2014/02/25/java-8-tutorial-through-katas-berlin-clock-easy/

http://blog.sigfpe.com/2006/08/you-could-have-invented-monads-and.html

2013-07-16

generators in future ECMAscript (node.js 0.11.2) - https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Iterators_and_Generators

Python 3

def pager(lines, pagelen=60):
    for lineno, line in enumerate(lines):
        yield line
        if lineno % pagelen == 0:
            yield "\f"

for line in pager((range(10000))):
    print(line)

Perl 6

use v6;

sub pager($lines, $pagelen=60) {
    gather for zip 1..200, $lines -> $lineno, $line {
        take $line;
        take "\f" if $lineno %% $pagelen
    }
}

for pager(1..*, 30) -> $line {
    say $line;
}

Haskell

pager ::(Show a) => [a] -> Int -> [String]
pager xs n = [if i %% n then show x else "\f" | (x,i) <- zip xs [1..]]

(%%) :: Int -> Int -> Bool
i %% n = (rem i n) /= 0


main :: IO ()
main = putStr ( unlines (pager [1..10000] 60))

2013-06-18

comb, one of the opposites of join (the other one is split)

String.prototype.comb = function(re) {
    // lol type conversion the hacky way
    re = ('' + re)              // now it's a string
        .replace(/^\//, '')     // hack off leading
        .replace(/\/$/, '');    // trailing delimiter
    // no interpolation, no sigils, no sprintf
    return eval('this.match(/(' + re + ')+/g)');
}

gather/take construct reimplemented for JS - a replacement for the idiom of declaring a collecting variable and pushing into it occasionally http://perl6.wikia.com/wiki/Gather

function gather(fn) {
    var guard = new Array;
    var take = function (items) {
        guard = guard.concat(items);
    };
    fn(take);
    return guard;
};

console.log(
    gather(function(take) {
        for (var i = 0; i <= 10; i++) {
            if (i % 2) {
                take(i);
            }
        }
    })
)

var arr = [];
for (var i = 0; i <= 10; i++) {
    if (i % 2) {
        arr.push(i);
    }
}

Haskell example is incomplete

gather x = foldr (:) [] x
main = print $ gather [0..10]

reimplementation of List::Gen::by http://p3rl.org/List::Gen#by-NUM-LIST (no generators, just list transformation)

function by(n, a) {
    var r = new Array;
    while(a.length) {
        r.push(a.splice(0, n));
    };
    console.log(a);
    return r;
};

function by2(n, a) {
    return a.length ? [a.slice(0, n)].concat(by2(n, a.slice(n))) : [];
}

console.log( by2(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) );
console.log( by2(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14]) );
console.log( by2(5, [1,2,3,4]) );
console.log( by2(5, []) );
// contrib by intval
// divides array into equal arrays, each of size n
function by(n, arr) {
    function byby(n, arr, accum) {
        if(arr.length < 1) {
            return accum;
        }
        var head = [arr.slice(0,n)];
        var tail = arr.slice(n);
        return byby(n, tail, accum.concat(head));
    }
    return byby(n, arr, []);
}

console.log( by(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15]) );
console.log( by(5, [1,2,3,4,5,6,7,8,9,10,11,12,13,14]) );
console.log( by(5, [1,2,3,4]) );
console.log( by(25, []) );

2013-05-21

A revival to much muttering, fretting and frowning of brows!

2012-10-15

  • Coding Challenge: bring your favourite languages, solve a small practical real-world problem from Stack Overflow in a functional fashion, let's hack and learn from each others' solutions [1] [2]

http://stackoverflow.com/questions/12872469

2012-09-17

2012-08-20

- Burrows-Wheeler Transformation aus "R.Bird - Pearls of functional Programming"

  • Algorithmus durchbesprechen und
  • Ein bischen testen mit QuickCheck

2012-07-23

2012-06-25

  • ClojureC - neues Projekt von schani

2012-05-24

2012-04-30

2012-03-05

Mo, 2012-04-02 ab 19:30 Uhr in der Bibliothek im Metalab
Mo, 2012-03-05 ab 19:30 Uhr in der Bibliothek im Metalab

Programm: Ich bin vor kurzem auf den catalyst coding contest hingewiesen worden und habe versucht das Challenge von 2010 in Haskell zu lösen, und stehe nun (ich armer Tor) vor dem 5ten Level. Und komm nicht weiter. Ich werde meinen Code präsentieren und wäre interessiert Lösungen funktionaler und nichtfunktionaler Art zu sehen, bzw. hoffe ich auf Ideen eurerseits wie ich weitercoden könnte.

Mein Zeug bzw die Aufgabenbeschreibungen (als pdf) findet Ihr auf github - ε/2

2012-02-13

Mo 2012-02-13 ab 19:30 in der Bibliothek im Metalab

Programm:

2012-01-09

Mo, 2012-01-09 ab 19:30 Uhr in der Bibliothek im Metalab

Programming Challenge by daxim. Solutions in Ruby (citizen428), Haskell (ε/2), Python2 (a friend of ε/2) and Common Lisp (japhy).

2011-11-12

Mo., 2011-11-12, ab 19:30 Uhr im Hauptraum im Metalab

angeregte Diskussion auf der Couch vor der Blinkenwall über alles mögliche™

2011-10-17

Mo, 17.10. ab 19:30 Uhr in der Bibliothek im Metalab

2011-09-19

Mo, 19.9. ab 19:30 Uhr in der Bibliothek im Metalab

  • Overview: Martins (=ε/2) Spielprojekt "Algebra Alchemy"
    • Symbolic Algebra
    • Algebraic Expression Trees
    • Parsing
    • Testing (HUnit)
    • Documentation (Haddock)

in Haskell all DIY - hopefully readable ;-)

2011-08-29

Lambdaheads Spezial, 29.8., 18:15 - 19:45

User:Antifuchs zeig AllegroGraph in der Bibliothek im Metalab.

2011-07-25

Mo, 25.7. ab 19:30 Uhr in der Bibliothek im Metalab

2011-06-27

Mo, 27.6. ab 19:30 Uhr in der Bibliothek im Metalab

  • OCaml is dead - long live OCaml
  • Sequential versus ISeq - Clo-shure?!?
  • Haskell examples - code of a newbie (ε/2)
  • Misc stuff to read the Monad.Reader #13 - Typeclassopedia

2011-05-30

Mo, 30.5. ab 19:30 Uhr in der Bibliothek im Metalab

2011-05-02

Mo, 2.5. ab 19:30 Uhr in der Bibliothek im Metalab

2011-04-04

Mo, 4.4. ab 19:30 Uhr in der Bibliothek im Metalab

2011-03-07

Mo, 7.3.2011 ab 19:30 in der Bibliothek im Metalab

2011-02-07

Mo, 7.2.2011 ab 19:30 Uhr in der Bibliothek im Metalab

  • Y-Combinator in Perl/Lisp/Javascript (citizen428)
  • myReverse list - a hard task todo on the fly - except in haskell ;-) (ε/2)

2011-01-17

Mo, 17.1. ab 19:30 Uhr in der Bibliothek im Metalab

2010-11-29

Mo, 29.11. ab 19:30 Uhr in der Bibliothek im Metalab

Brian Beckman's "Don't fear the Monads" talk

2010-10-04

Mo. 04.10.2010 ab 19:30 Uhr in der Bibliothek im Metalab

  • Common Lisp Object System (japhy)

2010-09-06

Mo. 06.09.2010 ab 19:30 Uhr in der Bibliothek im Metalab

  • Func proc concepts: Higher-order functions (citizen428)
  • Functional programming in Perl 6 (Daxim)
  • Function level programming with APL and J (citizen428)

2010-07-12

Mo. 12.07.2010 ab 19:30 Uhr im Hauptraum im Metalab

2010-06-14

Mo. 14.06.2010 ab 19:30 Uhr in der Bibliothek im Metalab

2010-05-17

Mo. 17.05.2010 ab 19:30 Uhr in der Bibliothek im Metalab

2010-04-19

Mo. 19.04.2010 ab 19:30 Uhr in der Bibliothek im Metalab

2010-03-22

Mo. 22.03.2010 ab 19:30 Uhr in der Bibliothek im Metalab