Zum Inhalt springen

Lambdaheads: Unterschied zwischen den Versionen

Daxim (Diskussion | Beiträge)
K Kat
Dio (Diskussion | Beiträge)
Keine Bearbeitungszusammenfassung
 
(55 dazwischenliegende Versionen von 5 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
 
== nächster regulärer Termin ==
 
Termin: Mo, '''2012-11-12''' ab 19:30 Uhr in der Bibliothek [[Lage|im Metalab]]
 
=== Programm ===


ad-hoc
== nächste reguläre Termine ==
=== 2017-07-19 Wed 19:30-22:00 (Library) ===
==== Topic: TBD ====


=== Teilnehmer ===
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.
 
* [[Benutzer:Daxim]]
<!--
* [[Benutzer:Epsilon.halbe|ε/2]]
* [[Benutzer:Lefant|Lefant]]
* [[Benutzer:Daxim]] & cie.
* [[Benutzer:Mark.probst|schani]]
* [[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 58: Zeile 57:


= Kontakt =
= Kontakt =
* [[User:Citizen428|citizen428]]
* [[User:dio|dio]]
<!--
* [[User:Citizen428|citizen428]] - derzeit auf Weltreise
* [[User:Epsilon.halbe|epsilonhalbe]]
* [[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 ==
== 2012-10-15 ==
Zeile 259: Zeile 552:
* Functional Programming in Perl 6
* Functional Programming in Perl 6


[[Kategorie:Veranstaltungen]]
[[Kategorie:Usergroups]]
[[Kategorie:Interessensgebiete]]