• úvod
  • témata
  • události
  • tržiště
  • diskuze
  • nástěnka
  • přihlásit
    registrace
    ztracené heslo?
    LUDWIG_Funkcionální programování (Haskell, LISP, XQuery, OCaml, F#, Scala, ...) - praxe, teorie a uplatnění

    Clojure's core typed vs Haskell

    8 hlasy od 8 respondentů
      A monad is just a monoid in the category of endofunctors, what's the problem? http://vimeo.com/38223410



      All programming languages evolve towards Lisp.

      Haskell is faster than C++, more concise than Perl, more regular than Python, more flexible than Ruby, more typeful than C#, more robust than Java, and has absolutely nothing in common with PHP. — Autrijus Tang

      There may, indeed, be other applications of the [lambda calculus] than its use as a logic. — Alonzo Church, 1932
      rozbalit záhlaví
      SATAI
      SATAI --- ---
      LUDWIG_: Rekl bych, ze dulezita bude nejen kniha, ale i nekdo, kdo muze pusobit jako mentor. Coz plati u prgani obecne. Kazdopadne take doporucuji SICP, trebas alespon jako zdroj cviceni.
      ALMAD
      ALMAD --- ---
      LUDWIG_: Přítelkyně (taktéž programováním nepoznamenaná) si čte real world haskell a tváří se spokojeně.
      LUDWIG_
      LUDWIG_ --- ---
      kamarad, ktery nikdy predtim neprogramoval, se chce naucit haskell - mate nekdo tip na nakou blbuvzdornou prirucku v anglictine? (mimo learnyouahaskell.com)
      ALMAD
      ALMAD --- ---
      SAJAGI: Jestli do toho počítáš i Erlang, tak ten se na distribuovaný zpracování dat používá afaik celkem prakticky a úspěšně, viz ejabberd, rabbitmq, couchdb, facebook chat, erikovský ústředny a tak ,)
      LITTLELI
      LITTLELI --- ---
      WOODMAKER: F# není čistý, takže to tam půjde uvařit s vedlejšíma efektama.
      LISKNI_SI
      LISKNI_SI --- ---
      TMA: Ad to EDSL, jestli máš čas, mrkni třeba sem: http://intoverflow.wordpress.com/2010/05/21/announcing-potential-x86-64-assembler-as-a-haskell-edsl/ a pak klikej na zajímavý odkazy. Já se v těch EDSL poslední dobu trochu patlal, ale dopisuju bakalářku, takže není čas diskutovat.
      LUDWIG_
      LUDWIG_ --- ---
      tak diskuze lehce prejmenovana, ted jeste neco zesumarizovat do zahlavi (pro lidi, kterym nestaci kombinator pevneho bodu :))... jinak klidne hazejte na nastenku odkazy k vasim oblibenym jazykum
      LUDWIG_
      LUDWIG_ --- ---
      SAJAGI: souhlasim s [ TMA @ Funkcionální programování (Haskell, LISP, O'Caml, F#, Scala, ...) ] - na ruzne "transformace"... tedy proste potrebujes-li se soustredit na hodnoty a ne na niternosti kolem behem programu, dava ti to mnohem vetsi prostor k abstrakci. u f# bacha, jak psal [ WOODMAKER @ Funkcionální programování (Haskell, LISP, O'Caml, F#, Scala, ...) ] , je to pomerne sympaticky hybrid, dovolujici takrka cloveku psat ruznymi paradigmaty, takze pri inklinovani k imperativnimu programovani zustava ten potencial funkcionalniho programovani nevyuzity :)

      TMA: http://www.haskell.org/happy/ - dotaz ale podsouvam ostatnim, kdo ma s timhle nejake vetsi zkusenosti.
      TMA
      TMA --- ---
      SAJAGI: Na cokoli, o čem se dobře přemýšlí jako o transformaci. (Něco jako: mám na začátku něco, výsledek získám tak, že spojím tuhle část a výsledek převodu támhleté části.)

      LUDWIG_: Jenže pak ten DSL nebude integrovaný. DSL pro popis instrukcí procesoru bude bokem. V C/C++ se místo maker tohoto typu používají generátory programů typu lex/yacc.
      WOODMAKER
      WOODMAKER --- ---
      SAJAGI: asi to bude chtít vědět, jak "funkcionálně přemýšlet", aby ten program pak k něčemu byl. Většině lidí, co jsou už trochu zvyklí na klasický programování to dělá obrovský problémy - žádný proměnný, potřeba vidět program jako celek a ne jako seznam věcí, co se tak asi provedou a jak přesně se provedou nastavím až potom. Ale hodně štěstí.
      SAJAGI
      SAJAGI --- ---
      WOODMAKER: Jo. V příštím projektu tedy zkusím F# na matematické modely, které jsou nyní implementovány v C#. Díky! :)
      WOODMAKER
      WOODMAKER --- ---
      SAJAGI: klasická matematika. Ten zápis je mnohem kratší, takže když máš něco matematicky zajímavějšího, nemusíš z toho dělat kdovíjakzdlouhavej a těžko čitelnej kód a soustředíš se fakt jenom na ten problém. Stačí to takhle?
      SAJAGI
      SAJAGI --- ---
      LUDWIG_: ok, tak já mám úplně začátečnický dotaz. Na jaký typ problémů se funkcionální jazyky nejvíc hodí? (ideálně bych chtěl slyšet něco z praxe, ne výcuc z wikipedie ;)
      LUDWIG_
      LUDWIG_ --- ---
      TMA: v tom se tolik neorientuji, ale predstavuji si, ze nejvetsi zaprah bude kolem napsani parseru, na coz je imho haskell idealni
      TMA
      TMA --- ---
      LUDWIG_: Kvůli DSL (domain specific language).
      LUDWIG_
      LUDWIG_ --- ---
      WOODMAKER: tak to je pomerne standardni u uceni se haskellu (narozdil od vetsiny "normalnich" jazyku), ze se projedou funkce a operace pro vstup/vystup byvaji az na konec, pokud vubec. mno, haskellacky funkce nepotrebuji side-efekty na IO (takhle se to resi v mirande, pokud se nepletu?), kdyz tu jsou monady :)

      TMA: myslim, ze ne - kvuli lazy evaluation ani nevim, jak by se to na to napasovalo... k cemu bys to vlastne potreboval? ja si u lispu pamatuji vyuziti na osetreni kodu, pokud neco bude (ne)nabyvat nejake hodnoty - o to se v haskellu nemusis starat a jen pouzijes monadu Maybe
      LITTLELI
      LITTLELI --- ---
      nebo Scalu
      SLUPKA
      SLUPKA --- ---
      WOODMAKER: Pokud chceš praktickou funkcionálku, mrkni na F# :)
      TMA
      TMA --- ---
      Je v Haskellu něco jako lispovské defmacro?
      WOODMAKER
      WOODMAKER --- ---
      LUDWIG_: díky. Tak mě napadlo, že bych se rád podíval na nějakej návod, jak ten jazyk používat prakticky. Měli jsme ve škole kurz haskellu a bylo to o funkcích. A všechny ty funkce byly jako takový a bez jakýchkoli side-efektů, jako je vstup, nebo výstup. Nebylo by prosím něco takového?
      LUDWIG_
      LUDWIG_ --- ---
      (jinak klidne hrnte newbies dotazy - nebojte, nikdo z nas nekouse :))
      LUDWIG_
      LUDWIG_ --- ---
      WOODMAKER: tak jako se vsim (viz proflakly vtipek s implementaci faktorialu: http://www.willamette.edu/~fruehr/haskell/evolution.html ) mas celkem dost moznosti - nejjednodussi je asi dat do main funkce putStrLn, tedy
      main = putStrLn "Hello World"
      pak zkompilujes a spustis, nebo pouzijes runghc

      (jestli jsem tedy spravne pochopil, ze chces klasicky hello world program, nikoliv jen hello world vraceny jako string v naky funkci v ghci)
      Kliknutím sem můžete změnit nastavení reklam