From cc14162e87d4d42db13a7f977baf0aa6e6580c31 Mon Sep 17 00:00:00 2001 From: Andrea Bellandi Date: Sat, 15 Aug 2015 15:25:30 +0200 Subject: [PATCH] added game monad --- doc/ICFP2015_aposteriori.listing | 0 doc/ICFP2015_aposteriori.log | 611 ++++++++++++++++++++++++++++ doc/ICFP2015_aposteriori.pdf | Bin 0 -> 19840 bytes doc/ICFP2015_aposteriori.pyg | 95 +++++ doc/ICFP2015_aposteriori.synctex.gz | 0 doc/ICFP2015_aposteriori.tex | 28 ++ src/MonadicGame.hs | 82 ++++ src/parMapParallelization.hs | 49 +++ 8 files changed, 865 insertions(+) create mode 100644 doc/ICFP2015_aposteriori.listing create mode 100644 doc/ICFP2015_aposteriori.log create mode 100644 doc/ICFP2015_aposteriori.pdf create mode 100644 doc/ICFP2015_aposteriori.pyg create mode 100644 doc/ICFP2015_aposteriori.synctex.gz create mode 100644 doc/ICFP2015_aposteriori.tex create mode 100644 src/MonadicGame.hs create mode 100644 src/parMapParallelization.hs diff --git a/doc/ICFP2015_aposteriori.listing b/doc/ICFP2015_aposteriori.listing new file mode 100644 index 0000000..e69de29 diff --git a/doc/ICFP2015_aposteriori.log b/doc/ICFP2015_aposteriori.log new file mode 100644 index 0000000..345dfb4 --- /dev/null +++ b/doc/ICFP2015_aposteriori.log @@ -0,0 +1,611 @@ +This is pdfTeX, Version 3.14159265-2.6-1.40.15 (TeX Live 2015/dev/Debian) (preloaded format=pdflatex 2015.1.27) 13 AUG 2015 02:09 +entering extended mode + \write18 enabled. + %&-line parsing enabled. +**ICFP2015_aposteriori.tex +(./ICFP2015_aposteriori.tex +LaTeX2e <2014/05/01> +Babel <3.9l> and hyphenation patterns for 34 languages loaded. +(/usr/share/texlive/texmf-dist/tex/latex/base/report.cls +Document Class: report 2014/09/29 v1.4h Standard LaTeX document class +(/usr/share/texlive/texmf-dist/tex/latex/base/size10.clo +File: size10.clo 2014/09/29 v1.4h Standard LaTeX file (size option) +) +\c@part=\count79 +\c@chapter=\count80 +\c@section=\count81 +\c@subsection=\count82 +\c@subsubsection=\count83 +\c@paragraph=\count84 +\c@subparagraph=\count85 +\c@figure=\count86 +\c@table=\count87 +\abovecaptionskip=\skip41 +\belowcaptionskip=\skip42 +\bibindent=\dimen102 +) +(/usr/share/texlive/texmf-dist/tex/latex/geometry/geometry.sty +Package: geometry 2010/09/12 v5.6 Page Geometry + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/keyval.sty +Package: keyval 2014/05/08 v1.15 key=value parser (DPC) +\KV@toks@=\toks14 +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifpdf.sty +Package: ifpdf 2011/01/30 v2.3 Provides the ifpdf switch (HO) +Package ifpdf Info: pdfTeX in PDF mode is detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifvtex.sty +Package: ifvtex 2010/03/01 v1.5 Detect VTeX and its facilities (HO) +Package ifvtex Info: VTeX not detected. +) +(/usr/share/texlive/texmf-dist/tex/generic/ifxetex/ifxetex.sty +Package: ifxetex 2010/09/12 v0.6 Provides ifxetex conditional +) +\Gm@cnth=\count88 +\Gm@cntv=\count89 +\c@Gm@tempcnt=\count90 +\Gm@bindingoffset=\dimen103 +\Gm@wd@mp=\dimen104 +\Gm@odd@mp=\dimen105 +\Gm@even@mp=\dimen106 +\Gm@layoutwidth=\dimen107 +\Gm@layoutheight=\dimen108 +\Gm@layouthoffset=\dimen109 +\Gm@layoutvoffset=\dimen110 +\Gm@dimlist=\toks15 +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.sty +\lst@mode=\count91 +\lst@gtempboxa=\box26 +\lst@token=\toks16 +\lst@length=\count92 +\lst@currlwidth=\dimen111 +\lst@column=\count93 +\lst@pos=\count94 +\lst@lostspace=\dimen112 +\lst@width=\dimen113 +\lst@newlines=\count95 +\lst@lineno=\count96 +\lst@maxwidth=\dimen114 + +(/usr/share/texlive/texmf-dist/tex/latex/listings/lstmisc.sty +File: lstmisc.sty 2014/09/06 1.5e (Carsten Heinz) +\c@lstnumber=\count97 +\lst@skipnumbers=\count98 +\lst@framebox=\box27 +) +(/usr/share/texlive/texmf-dist/tex/latex/listings/listings.cfg +File: listings.cfg 2014/09/06 1.5e listings configuration +)) +Package: listings 2014/09/06 1.5e (Carsten Heinz) + +(/usr/share/texlive/texmf-dist/tex/latex/tcolorbox/tcolorbox.sty +Package: tcolorbox 2014/10/10 version 3.21 text color boxes + +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgf.sty +(/usr/share/texlive/texmf-dist/tex/latex/pgf/utilities/pgfrcs.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common.tex +\pgfutil@everybye=\toks17 +\pgfutil@tempdima=\dimen115 +\pgfutil@tempdimb=\dimen116 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-common-lists.t +ex)) (/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfutil-latex.def +\pgfutil@abb=\box28 +(/usr/share/texlive/texmf-dist/tex/latex/ms/everyshi.sty +Package: everyshi 2001/05/15 v3.00 EveryShipout Package (MS) +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfrcs.code.tex +Package: pgfrcs 2013/12/20 v3.0.0 (rcs-revision 1.28) +)) +Package: pgf 2013/12/18 v3.0.0 (rcs-revision 1.14) + +(/usr/share/texlive/texmf-dist/tex/latex/pgf/basiclayer/pgfcore.sty +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphicx.sty +Package: graphicx 2014/04/25 v1.0g Enhanced LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/graphics.sty +Package: graphics 2009/02/05 v1.0o Standard LaTeX Graphics (DPC,SPQR) + +(/usr/share/texlive/texmf-dist/tex/latex/graphics/trig.sty +Package: trig 1999/03/16 v1.09 sin cos tan (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/graphics.cfg +File: graphics.cfg 2010/04/23 v1.9 graphics configuration of TeX Live +) +Package graphics Info: Driver file: pdftex.def on input line 91. + +(/usr/share/texlive/texmf-dist/tex/latex/pdftex-def/pdftex.def +File: pdftex.def 2011/05/27 v0.06d Graphics/color for pdfTeX + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/infwarerr.sty +Package: infwarerr 2010/04/08 v1.3 Providing info/warning/error messages (HO) +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ltxcmds.sty +Package: ltxcmds 2011/11/09 v1.22 LaTeX kernel commands for general use (HO) +) +\Gread@gobject=\count99 +)) +\Gin@req@height=\dimen117 +\Gin@req@width=\dimen118 +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/systemlayer/pgfsys.sty +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys.code.tex +Package: pgfsys 2013/11/30 v3.0.0 (rcs-revision 1.47) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeys.code.tex +\pgfkeys@pathtoks=\toks18 +\pgfkeys@temptoks=\toks19 + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/utilities/pgfkeysfiltered.code.t +ex +\pgfkeys@tmptoks=\toks20 +)) +\pgf@x=\dimen119 +\pgf@y=\dimen120 +\pgf@xa=\dimen121 +\pgf@ya=\dimen122 +\pgf@xb=\dimen123 +\pgf@yb=\dimen124 +\pgf@xc=\dimen125 +\pgf@yc=\dimen126 +\w@pgf@writea=\write3 +\r@pgf@reada=\read1 +\c@pgf@counta=\count100 +\c@pgf@countb=\count101 +\c@pgf@countc=\count102 +\c@pgf@countd=\count103 +\t@pgf@toka=\toks21 +\t@pgf@tokb=\toks22 +\t@pgf@tokc=\toks23 + (/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgf.cfg +File: pgf.cfg 2008/05/14 (rcs-revision 1.7) +) +Driver file for pgf: pgfsys-pdftex.def + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def +File: pgfsys-pdftex.def 2013/07/18 (rcs-revision 1.33) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-common-pdf.de +f +File: pgfsys-common-pdf.def 2013/10/10 (rcs-revision 1.13) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsyssoftpath.code. +tex +File: pgfsyssoftpath.code.tex 2013/09/09 (rcs-revision 1.9) +\pgfsyssoftpath@smallbuffer@items=\count104 +\pgfsyssoftpath@bigbuffer@items=\count105 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/systemlayer/pgfsysprotocol.code. +tex +File: pgfsysprotocol.code.tex 2006/10/16 (rcs-revision 1.4) +)) (/usr/share/texlive/texmf-dist/tex/latex/xcolor/xcolor.sty +Package: xcolor 2007/01/21 v2.11 LaTeX color extensions (UK) + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/color.cfg +File: color.cfg 2007/01/18 v1.5 color configuration of teTeX/TeXLive +) +Package xcolor Info: Driver file: pdftex.def on input line 225. +Package xcolor Info: Model `cmy' substituted by `cmy0' on input line 1337. +Package xcolor Info: Model `hsb' substituted by `rgb' on input line 1341. +Package xcolor Info: Model `RGB' extended on input line 1353. +Package xcolor Info: Model `HTML' substituted by `rgb' on input line 1355. +Package xcolor Info: Model `Hsb' substituted by `hsb' on input line 1356. +Package xcolor Info: Model `tHsb' substituted by `hsb' on input line 1357. +Package xcolor Info: Model `HSB' substituted by `hsb' on input line 1358. +Package xcolor Info: Model `Gray' substituted by `gray' on input line 1359. +Package xcolor Info: Model `wave' substituted by `hsb' on input line 1360. +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcore.code.tex +Package: pgfcore 2010/04/11 v3.0.0 (rcs-revision 1.7) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmath.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathcalc.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathutil.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathparser.code.tex +\pgfmath@dimen=\dimen127 +\pgfmath@count=\count106 +\pgfmath@box=\box29 +\pgfmath@toks=\toks24 +\pgfmath@stack@operand=\toks25 +\pgfmath@stack@operation=\toks26 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.code.tex +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.basic.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.trigonomet +ric.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.random.cod +e.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.comparison +.code.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.base.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.round.code +.tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.misc.code. +tex) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfunctions.integerari +thmetics.code.tex))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/math/pgfmathfloat.code.tex +\c@pgfmathroundto@lastzeros=\count107 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepoints.code.te +x +File: pgfcorepoints.code.tex 2013/10/07 (rcs-revision 1.27) +\pgf@picminx=\dimen128 +\pgf@picmaxx=\dimen129 +\pgf@picminy=\dimen130 +\pgf@picmaxy=\dimen131 +\pgf@pathminx=\dimen132 +\pgf@pathmaxx=\dimen133 +\pgf@pathminy=\dimen134 +\pgf@pathmaxy=\dimen135 +\pgf@xx=\dimen136 +\pgf@xy=\dimen137 +\pgf@yx=\dimen138 +\pgf@yy=\dimen139 +\pgf@zx=\dimen140 +\pgf@zy=\dimen141 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathconstruct. +code.tex +File: pgfcorepathconstruct.code.tex 2013/10/07 (rcs-revision 1.29) +\pgf@path@lastx=\dimen142 +\pgf@path@lasty=\dimen143 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathusage.code +.tex +File: pgfcorepathusage.code.tex 2013/12/13 (rcs-revision 1.23) +\pgf@shorten@end@additional=\dimen144 +\pgf@shorten@start@additional=\dimen145 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorescopes.code.te +x +File: pgfcorescopes.code.tex 2013/10/09 (rcs-revision 1.44) +\pgfpic=\box30 +\pgf@hbox=\box31 +\pgf@layerbox@main=\box32 +\pgf@picture@serial@count=\count108 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoregraphicstate.c +ode.tex +File: pgfcoregraphicstate.code.tex 2013/09/19 (rcs-revision 1.11) +\pgflinewidth=\dimen146 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransformation +s.code.tex +File: pgfcoretransformations.code.tex 2013/10/10 (rcs-revision 1.17) +\pgf@pt@x=\dimen147 +\pgf@pt@y=\dimen148 +\pgf@pt@temp=\dimen149 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorequick.code.tex +File: pgfcorequick.code.tex 2008/10/09 (rcs-revision 1.3) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreobjects.code.t +ex +File: pgfcoreobjects.code.tex 2006/10/11 (rcs-revision 1.2) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepathprocessing +.code.tex +File: pgfcorepathprocessing.code.tex 2013/09/09 (rcs-revision 1.9) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorearrows.code.te +x +File: pgfcorearrows.code.tex 2013/11/07 (rcs-revision 1.40) +\pgfarrowsep=\dimen150 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreshade.code.tex +File: pgfcoreshade.code.tex 2013/07/15 (rcs-revision 1.15) +\pgf@max=\dimen151 +\pgf@sys@shading@range@num=\count109 +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreimage.code.tex +File: pgfcoreimage.code.tex 2013/07/15 (rcs-revision 1.18) + +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoreexternal.code. +tex +File: pgfcoreexternal.code.tex 2013/07/15 (rcs-revision 1.20) +\pgfexternal@startupbox=\box33 +)) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorelayers.code.te +x +File: pgfcorelayers.code.tex 2013/07/18 (rcs-revision 1.7) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcoretransparency.c +ode.tex +File: pgfcoretransparency.code.tex 2013/09/30 (rcs-revision 1.5) +) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/basiclayer/pgfcorepatterns.code. +tex +File: pgfcorepatterns.code.tex 2013/11/07 (rcs-revision 1.5) +))) +(/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleshapes.code.tex +File: pgfmoduleshapes.code.tex 2013/10/31 (rcs-revision 1.34) +\pgfnodeparttextbox=\box34 +) (/usr/share/texlive/texmf-dist/tex/generic/pgf/modules/pgfmoduleplot.code.tex +File: pgfmoduleplot.code.tex 2013/07/31 (rcs-revision 1.12) +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-0-65 +.sty +Package: pgfcomp-version-0-65 2007/07/03 v3.0.0 (rcs-revision 1.7) +\pgf@nodesepstart=\dimen152 +\pgf@nodesepend=\dimen153 +) +(/usr/share/texlive/texmf-dist/tex/latex/pgf/compatibility/pgfcomp-version-1-18 +.sty +Package: pgfcomp-version-1-18 2007/07/23 v3.0.0 (rcs-revision 1.1) +)) (/usr/share/texlive/texmf-dist/tex/latex/tools/verbatim.sty +Package: verbatim 2014/10/28 v1.5q LaTeX2e package for verbatim enhancements +\every@verbatim=\toks27 +\verbatim@line=\toks28 +\verbatim@in@stream=\read2 +) +(/usr/share/texlive/texmf-dist/tex/latex/environ/environ.sty +Package: environ 2014/05/04 v0.3 A new way to define environments + +(/usr/share/texlive/texmf-dist/tex/latex/trimspaces/trimspaces.sty +Package: trimspaces 2009/09/17 v1.1 Trim spaces around a token list +) +\@envbody=\toks29 +) +(/usr/share/texlive/texmf-dist/tex/latex/etoolbox/etoolbox.sty +Package: etoolbox 2011/01/03 v2.1 e-TeX tools for LaTeX + +(/usr/share/texlive/texmf-dist/tex/latex/etex-pkg/etex.sty +Package: etex 1998/03/26 v2.0 eTeX basic definition package (PEB) +\et@xins=\count110 +) +\etb@tempcnta=\count111 +) +\tcb@titlebox=\box35 +\tcb@upperbox=\box36 +\tcb@lowerbox=\box37 +\tcb@phantombox=\box38 +\c@tcbbreakpart=\count112 +\c@tcblayer=\count113 +\tcb@temp=\box39 +\tcb@temp=\box40 +\tcb@temp=\box41 +\tcb@temp=\box42 +\tcb@out=\write4 +) +(/usr/share/texlive/texmf-dist/tex/latex/minted/minted.sty +Package: minted 2011/09/17 v1.7 Yet another Pygments shim for LaTeX + +(/usr/share/texlive/texmf-dist/tex/latex/fancyvrb/fancyvrb.sty +Package: fancyvrb 2008/02/07 + +Style option: `fancyvrb' v2.7a, with DG/SPQR fixes, and firstline=lastline fix +<2008/02/07> (tvz) +\FV@CodeLineNo=\count114 +\FV@InFile=\read3 +\FV@TabBox=\box43 +\c@FancyVerbLine=\count115 +\FV@StepNumber=\count116 +\FV@OutFile=\write5 +) (/usr/share/texlive/texmf-dist/tex/latex/float/float.sty +Package: float 2001/11/08 v1.3d Float enhancements (AL) +\c@float@type=\count117 +\float@exts=\toks30 +\float@box=\box44 +\@float@everytoks=\toks31 +\@floatcapt=\box45 +) +(/usr/share/texlive/texmf-dist/tex/latex/base/ifthen.sty +Package: ifthen 2014/09/29 v1.1c Standard LaTeX ifthen package (DPC) +) +(/usr/share/texlive/texmf-dist/tex/latex/tools/calc.sty +Package: calc 2014/10/28 v4.3 Infix arithmetic (KKT,FJ) +\calc@Acount=\count118 +\calc@Bcount=\count119 +\calc@Adimen=\dimen154 +\calc@Bdimen=\dimen155 +\calc@Askip=\skip43 +\calc@Bskip=\skip44 +LaTeX Info: Redefining \setlength on input line 75. +LaTeX Info: Redefining \addtolength on input line 76. +\calc@Ccount=\count120 +\calc@Cskip=\skip45 +) +(/usr/share/texlive/texmf-dist/tex/latex/ifplatform/ifplatform.sty +Package: ifplatform 2010/10/22 v0.4 Testing for the operating system + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/pdftexcmds.sty +Package: pdftexcmds 2011/11/29 v0.20 Utility functions of pdfTeX for LuaTeX (HO +) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/ifluatex.sty +Package: ifluatex 2010/03/01 v1.3 Provides the ifluatex switch (HO) +Package ifluatex Info: LuaTeX not detected. +) +Package pdftexcmds Info: LuaTeX not detected. +Package pdftexcmds Info: \pdf@primitive is available. +Package pdftexcmds Info: \pdf@ifprimitive is available. +Package pdftexcmds Info: \pdfdraftmode found. +) +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/catchfile.sty +Package: catchfile 2011/03/01 v1.6 Catch the contents of a file (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/etexcmds.sty +Package: etexcmds 2011/02/16 v1.5 Avoid name clashes with e-TeX commands (HO) +Package etexcmds Info: Could not find \expanded. +(etexcmds) That can mean that you are not using pdfTeX 1.50 or +(etexcmds) that some package has redefined \expanded. +(etexcmds) In the latter case, load this package earlier. +)) +runsystem(uname -s > "ICFP2015_aposteriori.w18")...executed. + + +(./ICFP2015_aposteriori.w18) +runsystem(rm -- "ICFP2015_aposteriori.w18")...executed. + +) +\minted@bgbox=\box46 +\minted@code=\write6 +\@float@every@listing=\toks32 +\c@listing=\count121 +) +runsystem(which pygmentize && touch ICFP2015_aposteriori.aex)...executed. + +runsystem(rm ICFP2015_aposteriori.aex)...executed. + + (./ICFP2015_aposteriori.aux) +\openout1 = `ICFP2015_aposteriori.aux'. + +LaTeX Font Info: Checking defaults for OML/cmm/m/it on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for T1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OT1/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OMS/cmsy/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for OMX/cmex/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. +LaTeX Font Info: Checking defaults for U/cmr/m/n on input line 8. +LaTeX Font Info: ... okay on input line 8. + +*geometry* driver: auto-detecting +*geometry* detected driver: pdftex +*geometry* verbose mode - [ preamble ] result: +* driver: pdftex +* paper: a4paper +* layout: +* layoutoffset:(h,v)=(0.0pt,0.0pt) +* modes: +* h-part:(L,W,R)=(71.13188pt, 455.24411pt, 71.13188pt) +* v-part:(T,H,B)=(101.40665pt, 591.5302pt, 152.11pt) +* \paperwidth=597.50787pt +* \paperheight=845.04684pt +* \textwidth=455.24411pt +* \textheight=591.5302pt +* \oddsidemargin=-1.1381pt +* \evensidemargin=-1.1381pt +* \topmargin=-7.86334pt +* \headheight=12.0pt +* \headsep=25.0pt +* \topskip=10.0pt +* \footskip=30.0pt +* \marginparwidth=57.0pt +* \marginparsep=11.0pt +* \columnsep=10.0pt +* \skip\footins=9.0pt plus 4.0pt minus 2.0pt +* \hoffset=0.0pt +* \voffset=0.0pt +* \mag=1000 +* \@twocolumnfalse +* \@twosidefalse +* \@mparswitchfalse +* \@reversemarginfalse +* (1in=72.27pt=25.4mm, 1cm=28.453pt) + +\c@lstlisting=\count122 +ABD: EveryShipout initializing macros +(/usr/share/texlive/texmf-dist/tex/context/base/supp-pdf.mkii +[Loading MPS to PDF converter (version 2006.09.02).] +\scratchcounter=\count123 +\scratchdimen=\dimen156 +\scratchbox=\box47 +\nofMPsegments=\count124 +\nofMParguments=\count125 +\everyMPshowfont=\toks33 +\MPscratchCnt=\count126 +\MPscratchDim=\dimen157 +\MPnumerator=\count127 +\makeMPintoPDFobject=\count128 +\everyMPtoPDFconversion=\toks34 +) (/usr/share/texlive/texmf-dist/tex/latex/oberdiek/epstopdf-base.sty +Package: epstopdf-base 2010/02/09 v2.5 Base part for package epstopdf + +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/grfext.sty +Package: grfext 2010/08/19 v1.1 Manage graphics extensions (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvdefinekeys.sty +Package: kvdefinekeys 2011/04/07 v1.3 Define keys (HO) +)) +(/usr/share/texlive/texmf-dist/tex/latex/oberdiek/kvoptions.sty +Package: kvoptions 2011/06/30 v3.11 Key value format for package options (HO) + +(/usr/share/texlive/texmf-dist/tex/generic/oberdiek/kvsetkeys.sty +Package: kvsetkeys 2012/04/25 v1.16 Key value parser (HO) +)) +Package grfext Info: Graphics extension search list: +(grfext) [.png,.pdf,.jpg,.mps,.jpeg,.jbig2,.jb2,.PNG,.PDF,.JPG,.JPE +G,.JBIG2,.JB2,.eps] +(grfext) \AppendGraphicsExtensions on input line 452. + +(/usr/share/texlive/texmf-dist/tex/latex/latexconfig/epstopdf-sys.cfg +File: epstopdf-sys.cfg 2010/07/13 v1.3 Configuration of (r)epstopdf for TeX Liv +e +)) +runsystem(pygmentize -S default -f latex > ICFP2015_aposteriori.pyg)...executed +. + + +(./ICFP2015_aposteriori.pyg) + +! LaTeX Error: Environment haskellcode undefined. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.9 \begin{haskellcode} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +! You can't use `macro parameter character #' in horizontal mode. +l.11 {-# + LANGUAGE QuasiQuotes #-} +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + +! You can't use `macro parameter character #' in horizontal mode. +l.11 {-# LANGUAGE QuasiQuotes # + -} +Sorry, but I'm not programmed to handle this case; +I'll just pretend that you didn't ask for it. +If you're in the wrong mode, you might be able to +return to the right one by typing `I}' or `I$' or `I\par'. + + +! LaTeX Error: \begin{document} ended by \end{haskellcode}. + +See the LaTeX manual or LaTeX Companion for explanation. +Type H for immediate help. + ... + +l.27 \end{haskellcode} + +Your command was ignored. +Type I to replace it with another command, +or to continue without it. + +[1 + +{/var/lib/texmf/fonts/map/pdftex/updmap/pdftex.map}] +(./ICFP2015_aposteriori.aux) ) +Here is how much of TeX's memory you used: + 12949 strings out of 494329 + 244860 string characters out of 6162864 + 292374 words of memory out of 5000000 + 15986 multiletter control sequences out of 15000+600000 + 3640 words of font info for 14 fonts, out of 8000000 for 9000 + 417 hyphenation exceptions out of 8191 + 54i,5n,73p,842b,219s stack positions out of 5000i,500n,10000p,200000b,80000s + +Output written on ICFP2015_aposteriori.pdf (1 page, 19840 bytes). +PDF statistics: + 15 PDF objects out of 1000 (max. 8388607) + 10 compressed objects within 1 object stream + 0 named destinations out of 1000 (max. 500000) + 13 words of extra memory for PDF output out of 10000 (max. 10000000) + diff --git a/doc/ICFP2015_aposteriori.pdf b/doc/ICFP2015_aposteriori.pdf new file mode 100644 index 0000000000000000000000000000000000000000..f66ba922f1ef2d8e7c8379f76ed9b89c2b3371f8 GIT binary patch literal 19840 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 W35yD01_P#vLNI}AvL;wl(7ymhJ}+MY literal 0 HcmV?d00001 diff --git a/doc/ICFP2015_aposteriori.pyg b/doc/ICFP2015_aposteriori.pyg new file mode 100644 index 0000000..fc7be3e --- /dev/null +++ b/doc/ICFP2015_aposteriori.pyg @@ -0,0 +1,95 @@ + +\makeatletter +\def\PY@reset{\let\PY@it=\relax \let\PY@bf=\relax% + \let\PY@ul=\relax \let\PY@tc=\relax% + \let\PY@bc=\relax \let\PY@ff=\relax} +\def\PY@tok#1{\csname PY@tok@#1\endcsname} +\def\PY@toks#1+{\ifx\relax#1\empty\else% + \PY@tok{#1}\expandafter\PY@toks\fi} +\def\PY@do#1{\PY@bc{\PY@tc{\PY@ul{% + \PY@it{\PY@bf{\PY@ff{#1}}}}}}} +\def\PY#1#2{\PY@reset\PY@toks#1+\relax+\PY@do{#2}} + +\expandafter\def\csname PY@tok@gd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@gu\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.50,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@gt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.27,0.87}{##1}}} +\expandafter\def\csname PY@tok@gs\endcsname{\let\PY@bf=\textbf} +\expandafter\def\csname PY@tok@gr\endcsname{\def\PY@tc##1{\textcolor[rgb]{1.00,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@cm\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@vg\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@m\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@mh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@go\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.53,0.53}{##1}}} +\expandafter\def\csname PY@tok@ge\endcsname{\let\PY@it=\textit} +\expandafter\def\csname PY@tok@vc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@il\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@cs\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@cp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.74,0.48,0.00}{##1}}} +\expandafter\def\csname PY@tok@gi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@gh\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@ni\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.60,0.60,0.60}{##1}}} +\expandafter\def\csname PY@tok@nl\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.63,0.63,0.00}{##1}}} +\expandafter\def\csname PY@tok@nn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@no\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.53,0.00,0.00}{##1}}} +\expandafter\def\csname PY@tok@na\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.49,0.56,0.16}{##1}}} +\expandafter\def\csname PY@tok@nb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@nd\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@ne\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.82,0.25,0.23}{##1}}} +\expandafter\def\csname PY@tok@nf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,1.00}{##1}}} +\expandafter\def\csname PY@tok@si\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@s2\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@vi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@nt\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@nv\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@s1\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@kd\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@sh\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@sc\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@sx\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@bp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c1\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@kc\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@c\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.25,0.50,0.50}{##1}}} +\expandafter\def\csname PY@tok@mf\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@err\endcsname{\def\PY@bc##1{\setlength{\fboxsep}{0pt}\fcolorbox[rgb]{1.00,0.00,0.00}{1,1,1}{\strut ##1}}} +\expandafter\def\csname PY@tok@mb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@ss\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.10,0.09,0.49}{##1}}} +\expandafter\def\csname PY@tok@sr\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.53}{##1}}} +\expandafter\def\csname PY@tok@mo\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kn\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@mi\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@gp\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.00,0.50}{##1}}} +\expandafter\def\csname PY@tok@o\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.40,0.40,0.40}{##1}}} +\expandafter\def\csname PY@tok@kr\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@s\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@kp\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@w\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.73,0.73}{##1}}} +\expandafter\def\csname PY@tok@kt\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.69,0.00,0.25}{##1}}} +\expandafter\def\csname PY@tok@ow\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.67,0.13,1.00}{##1}}} +\expandafter\def\csname PY@tok@sb\endcsname{\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} +\expandafter\def\csname PY@tok@k\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.00,0.50,0.00}{##1}}} +\expandafter\def\csname PY@tok@se\endcsname{\let\PY@bf=\textbf\def\PY@tc##1{\textcolor[rgb]{0.73,0.40,0.13}{##1}}} +\expandafter\def\csname PY@tok@sd\endcsname{\let\PY@it=\textit\def\PY@tc##1{\textcolor[rgb]{0.73,0.13,0.13}{##1}}} + +\def\PYZbs{\char`\\} +\def\PYZus{\char`\_} +\def\PYZob{\char`\{} +\def\PYZcb{\char`\}} +\def\PYZca{\char`\^} +\def\PYZam{\char`\&} +\def\PYZlt{\char`\<} +\def\PYZgt{\char`\>} +\def\PYZsh{\char`\#} +\def\PYZpc{\char`\%} +\def\PYZdl{\char`\$} +\def\PYZhy{\char`\-} +\def\PYZsq{\char`\'} +\def\PYZdq{\char`\"} +\def\PYZti{\char`\~} +% for compatibility with earlier versions +\def\PYZat{@} +\def\PYZlb{[} +\def\PYZrb{]} +\makeatother + diff --git a/doc/ICFP2015_aposteriori.synctex.gz b/doc/ICFP2015_aposteriori.synctex.gz new file mode 100644 index 0000000..e69de29 diff --git a/doc/ICFP2015_aposteriori.tex b/doc/ICFP2015_aposteriori.tex new file mode 100644 index 0000000..f955478 --- /dev/null +++ b/doc/ICFP2015_aposteriori.tex @@ -0,0 +1,28 @@ +\documentclass[a4paper]{report} +\usepackage[left=2.5cm,right=2.5cm]{geometry} + +\usepackage{listings} +\usepackage{tcolorbox} +\usepackage{minted} + +\begin{document} +\begin{haskellcode} + +{-# LANGUAGE QuasiQuotes #-} +import Yesod + +data HelloWorld = HelloWorld + +mkYesod "HelloWorld" [parseRoutes| +/ HomeR GET +|] + +instance Yesod HelloWorld + +getHomeR :: Handler Html +getHomeR = defaultLayout [whamlet|Hello World!|] + +main :: IO () +main = warp 3000 HelloWorld +\end{haskellcode} +\end{document} \ No newline at end of file diff --git a/src/MonadicGame.hs b/src/MonadicGame.hs new file mode 100644 index 0000000..6c30ba7 --- /dev/null +++ b/src/MonadicGame.hs @@ -0,0 +1,82 @@ +{-# OPTIONS -Wall #-} +import Control.Applicative +import Datatypes.Game +import VM + + + +data MonadicGameInternal = MonadicGameInternal { igame :: Game , inote :: Notes} + +data MonadicGame a = MonadicAction {action :: (MonadicGameInternal -> (MonadicGameInternal, a))} + +instance Functor MonadicGame where + fmap f (MonadicAction modifierFunction) = (MonadicAction newModifierFunction) + where + newModifierFunction = (\x -> ((fst . modifierFunction) x, (f . snd . modifierFunction) x)) + + +instance Applicative MonadicGame where + (MonadicAction higherOrderModifierFunction) <*> (MonadicAction modifierFunction) = (MonadicAction newModifierFunction) + where + getGameFunction = fst . modifierFunction + getValueFunction = snd . modifierFunction + newGameState = fst . higherOrderModifierFunction . getGameFunction + functionToApply = snd . higherOrderModifierFunction . getGameFunction + newModifierFunction = (\x -> (newGameState x, (functionToApply x) (getValueFunction x))) + + pure retData = MonadicAction (\x -> (x, retData)) + + +instance Monad MonadicGame where + (MonadicAction modifierFunction) >>= f = (MonadicAction newModifierFunction) + where + getGameFunction = fst . modifierFunction + getValueFunction = snd . modifierFunction + getParametrizedModifierFunction = action . f . getValueFunction + newModifierFunction = (\x -> getParametrizedModifierFunction x (getGameFunction x)) + + return = pure + +-- Private state modifiers -- + +modifyGame :: (a -> MonadicGameInternal -> (MonadicGameInternal, b)) -> a -> MonadicGame b +modifyGame accessorFunction param = (MonadicAction (accessorFunction param)) + +readGame :: (MonadicGameInternal -> a) -> MonadicGame a +readGame readFunction = modifyGame (\_ x -> (x, readFunction x)) () + +writeGame :: (a -> MonadicGameInternal -> MonadicGameInternal) -> a -> MonadicGame () +writeGame writeFunction = modifyGame (\x y -> (writeFunction x y, ())) + +------ Public Functions ----- + + +-- Apply the monad to a Game +executeGame :: Game -> MonadicGame () -> ([Command], Int) +executeGame game (MonadicAction finalFunction) = (history executedGame, score executedGame) + where + executedGame = (igame . fst . finalFunction) (MonadicGameInternal{igame = game, inote = OK}) + +-- Execute a command +move :: Command -> MonadicGame () +move command = writeGame applyMove command + where + applyMove param oldGameInternal = newInternals + where + newInternals = MonadicGameInternal {igame = newIgame, inote = newInote} + newIgame = fst $ step (igame oldGameInternal) param + newInote = snd $ step (igame oldGameInternal) param + +-- Execute a list of commands +moves :: [Command] -> MonadicGame () +moves commands = mapM_ move commands + +-- Read actual score +readScore :: MonadicGame Int +readScore = readGame (score . igame) + +-- Read actual note +readNote :: MonadicGame Notes +readNote = readGame inote + +----------------------------- diff --git a/src/parMapParallelization.hs b/src/parMapParallelization.hs new file mode 100644 index 0000000..c607b6a --- /dev/null +++ b/src/parMapParallelization.hs @@ -0,0 +1,49 @@ +{-# OPTIONS -Wall #-} +module MonadParParallelization(parallelizedTimed) where + +import Control.DeepSeq (deepseq) +import Control.Concurrent.MVar +import Control.Concurrent +import Control.Monad.Par + +parallelizedTimed :: (NFData a) => Int -> (a -> a) -> [a] -> IO [a] +parallelizedTimed sec f toCompute = do stopVar <- newMVar False + putStrLn "WORKERS STARTED" + worker <- monadParFork (workerFunction f stopVar) toCompute + putStrLn "CLOCK STARTED" + secWait sec + putStrLn "STOP MESSAGE SENT" + sendStopMessage stopVar + putStrLn "WAITING FOR COMPLETITION" + waitWorkerCompletition worker + putStrLn "RETRIEVE DATA" + retrieveAllData worker + where + secWait = threadDelay . (1000000 * ) + sendStopMessage stopMessageC = putMVar stopMessageC True + +monadParFork :: ((MVar Bool,MVar [a], [a]) -> IO ()) -> [a] -> IO (MVar Bool,MVar [a]) +monadParFork f toCompute = do stopThreadVar <- newMVar False + dataMVar <- newMVar toCompute + _ <- forkIO (f (stopThreadVar, dataMVar, toCompute)) + return (stopThreadVar, dataMVar) + +workerFunction :: (NFData a) => (a -> a) -> MVar Bool -> (MVar Bool, MVar [a], [a]) -> IO () +workerFunction f stopVar (threadEndedVar, dataVar, dataEls) = do stopped <- readMVar stopVar + if stopped + then do putMVar dataVar dataEls + putMVar threadEndedVar True + else do let newData = evalf + newData `deepseq` workerFunction f stopVar (threadEndedVar, dataVar, newData) + where + evalf = parMap `deepseq` f dataEls + +waitWorkerCompletition :: (MVar Bool, MVar [a]) -> IO () +waitWorkerCompletition workers = do finished <- readMVar (fst workers) + if finished + then return () + else waitWorkerCompletition workers + +retrieveAllData :: (MVar Bool, MVar [a]) -> IO [a] + +retrieveAllData workers = readMVar (snd workers)