<!doctype html>
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office">
        <head>
                <!-- NAME: BASIC RSS -->
                <!--[if gte mso 15]>
                <xml>
                        <o:OfficeDocumentSettings>
                        <o:AllowPNG/>
                        <o:PixelsPerInch>96</o:PixelsPerInch>
                        </o:OfficeDocumentSettings>
                </xml>
                <![endif]-->
                <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1">
                <title>Haskell Weekly - 01/18/2017</title>

    <style type="text/css">
                p{
                        margin:10px 0;
                        padding:0;
                }
                table{
                        border-collapse:collapse;
                }
                h1,h2,h3,h4,h5,h6{
                        display:block;
                        margin:0;
                        padding:0;
                }
                img,a img{
                        border:0;
                        height:auto;
                        outline:none;
                        text-decoration:none;
                }
                body,#bodyTable,#bodyCell{
                        height:100%;
                        margin:0;
                        padding:0;
                        width:100%;
                }
                #outlook a{
                        padding:0;
                }
                img{
                        -ms-interpolation-mode:bicubic;
                }
                table{
                        mso-table-lspace:0pt;
                        mso-table-rspace:0pt;
                }
                .ReadMsgBody{
                        width:100%;
                }
                .ExternalClass{
                        width:100%;
                }
                p,a,li,td,blockquote{
                        mso-line-height-rule:exactly;
                }
                a[href^=tel],a[href^=sms]{
                        color:inherit;
                        cursor:default;
                        text-decoration:none;
                }
                p,a,li,td,body,table,blockquote{
                        -ms-text-size-adjust:100%;
                        -webkit-text-size-adjust:100%;
                }
                .ExternalClass,.ExternalClass p,.ExternalClass td,.ExternalClass div,.ExternalClass span,.ExternalClass font{
                        line-height:100%;
                }
                a[x-apple-data-detectors]{
                        color:inherit !important;
                        text-decoration:none !important;
                        font-size:inherit !important;
                        font-family:inherit !important;
                        font-weight:inherit !important;
                        line-height:inherit !important;
                }
                #bodyCell{
                        padding:10px;
                }
                .templateContainer{
                        max-width:600px !important;
                }
                a.mcnButton{
                        display:block;
                }
                .mcnImage{
                        vertical-align:bottom;
                }
                .mcnTextContent{
                        word-break:break-word;
                }
                .mcnTextContent img{
                        height:auto !important;
                }
                .mcnDividerBlock{
                        table-layout:fixed !important;
                }
                body,#bodyTable{
                        background-color:#FAFAFA;
                }
                #bodyCell{
                        border-top:0;
                }
                .templateContainer{
                        border:0;
                }
                h1{
                        color:#202020;
                        font-family:Helvetica;
                        font-size:26px;
                        font-style:normal;
                        font-weight:bold;
                        line-height:125%;
                        letter-spacing:normal;
                        text-align:left;
                }
                h2{
                        color:#202020;
                        font-family:Helvetica;
                        font-size:22px;
                        font-style:normal;
                        font-weight:bold;
                        line-height:125%;
                        letter-spacing:normal;
                        text-align:left;
                }
                h3{
                        color:#202020;
                        font-family:Helvetica;
                        font-size:20px;
                        font-style:normal;
                        font-weight:bold;
                        line-height:125%;
                        letter-spacing:normal;
                        text-align:left;
                }
                h4{
                        color:#202020;
                        font-family:Helvetica;
                        font-size:18px;
                        font-style:normal;
                        font-weight:bold;
                        line-height:125%;
                        letter-spacing:normal;
                        text-align:left;
                }
                #templatePreheader{
                        background-color:#FAFAFA;
                        background-image:none;
                        background-repeat:no-repeat;
                        background-position:center;
                        background-size:cover;
                        border-top:0;
                        border-bottom:0;
                        padding-top:9px;
                        padding-bottom:9px;
                }
                #templatePreheader .mcnTextContent,#templatePreheader .mcnTextContent p{
                        color:#656565;
                        font-family:Helvetica;
                        font-size:12px;
                        line-height:150%;
                        text-align:left;
                }
                #templatePreheader .mcnTextContent a,#templatePreheader .mcnTextContent p a{
                        color:#656565;
                        font-weight:normal;
                        text-decoration:underline;
                }
                #templateHeader{
                        background-color:#FFFFFF;
                        background-image:none;
                        background-repeat:no-repeat;
                        background-position:center;
                        background-size:cover;
                        border-top:0;
                        border-bottom:0;
                        padding-top:9px;
                        padding-bottom:0;
                }
                #templateHeader .mcnTextContent,#templateHeader .mcnTextContent p{
                        color:#202020;
                        font-family:Helvetica;
                        font-size:16px;
                        line-height:150%;
                        text-align:left;
                }
                #templateHeader .mcnTextContent a,#templateHeader .mcnTextContent p a{
                        color:#2BAADF;
                        font-weight:normal;
                        text-decoration:underline;
                }
                #templateBody{
                        background-color:#FFFFFF;
                        background-image:none;
                        background-repeat:no-repeat;
                        background-position:center;
                        background-size:cover;
                        border-top:0;
                        border-bottom:2px solid #EAEAEA;
                        padding-top:0;
                        padding-bottom:9px;
                }
                #templateBody .mcnTextContent,#templateBody .mcnTextContent p{
                        color:#202020;
                        font-family:Helvetica;
                        font-size:16px;
                        line-height:150%;
                        text-align:left;
                }
                #templateBody .mcnTextContent a,#templateBody .mcnTextContent p a{
                        color:#2BAADF;
                        font-weight:normal;
                        text-decoration:underline;
                }
                #templateFooter{
                        background-color:#FAFAFA;
                        background-image:none;
                        background-repeat:no-repeat;
                        background-position:center;
                        background-size:cover;
                        border-top:0;
                        border-bottom:0;
                        padding-top:9px;
                        padding-bottom:9px;
                }
                #templateFooter .mcnTextContent,#templateFooter .mcnTextContent p{
                        color:#656565;
                        font-family:Helvetica;
                        font-size:12px;
                        line-height:150%;
                        text-align:center;
                }
                #templateFooter .mcnTextContent a,#templateFooter .mcnTextContent p a{
                        color:#656565;
                        font-weight:normal;
                        text-decoration:underline;
                }
        @media only screen and (min-width:768px){
                .templateContainer{
                        width:600px !important;
                }

}       @media only screen and (max-width: 480px){
                body,table,td,p,a,li,blockquote{
                        -webkit-text-size-adjust:none !important;
                }

}       @media only screen and (max-width: 480px){
                body{
                        width:100% !important;
                        min-width:100% !important;
                }

}       @media only screen and (max-width: 480px){
                #bodyCell{
                        padding-top:10px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnImage{
                        width:100% !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnCartContainer,.mcnCaptionTopContent,.mcnRecContentContainer,.mcnCaptionBottomContent,.mcnTextContentContainer,.mcnBoxedTextContentContainer,.mcnImageGroupContentContainer,.mcnCaptionLeftTextContentContainer,.mcnCaptionRightTextContentContainer,.mcnCaptionLeftImageContentContainer,.mcnCaptionRightImageContentContainer,.mcnImageCardLeftTextContentContainer,.mcnImageCardRightTextContentContainer{
                        max-width:100% !important;
                        width:100% !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnBoxedTextContentContainer{
                        min-width:100% !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnImageGroupContent{
                        padding:9px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnCaptionLeftContentOuter .mcnTextContent,.mcnCaptionRightContentOuter .mcnTextContent{
                        padding-top:9px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnImageCardTopImageContent,.mcnCaptionBlockInner .mcnCaptionTopContent:last-child .mcnTextContent{
                        padding-top:18px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnImageCardBottomImageContent{
                        padding-bottom:9px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnImageGroupBlockInner{
                        padding-top:0 !important;
                        padding-bottom:0 !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnImageGroupBlockOuter{
                        padding-top:9px !important;
                        padding-bottom:9px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnTextContent,.mcnBoxedTextContentColumn{
                        padding-right:18px !important;
                        padding-left:18px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnImageCardLeftImageContent,.mcnImageCardRightImageContent{
                        padding-right:18px !important;
                        padding-bottom:0 !important;
                        padding-left:18px !important;
                }

}       @media only screen and (max-width: 480px){
                .mcpreview-image-uploader{
                        display:none !important;
                        width:100% !important;
                }

}       @media only screen and (max-width: 480px){
                h1{
                        font-size:22px !important;
                        line-height:125% !important;
                }

}       @media only screen and (max-width: 480px){
                h2{
                        font-size:20px !important;
                        line-height:125% !important;
                }

}       @media only screen and (max-width: 480px){
                h3{
                        font-size:18px !important;
                        line-height:125% !important;
                }

}       @media only screen and (max-width: 480px){
                h4{
                        font-size:16px !important;
                        line-height:150% !important;
                }

}       @media only screen and (max-width: 480px){
                .mcnBoxedTextContentContainer .mcnTextContent,.mcnBoxedTextContentContainer .mcnTextContent p{
                        font-size:14px !important;
                        line-height:150% !important;
                }

}       @media only screen and (max-width: 480px){
                #templatePreheader{
                        display:block !important;
                }

}       @media only screen and (max-width: 480px){
                #templatePreheader .mcnTextContent,#templatePreheader .mcnTextContent p{
                        font-size:14px !important;
                        line-height:150% !important;
                }

}       @media only screen and (max-width: 480px){
                #templateHeader .mcnTextContent,#templateHeader .mcnTextContent p{
                        font-size:16px !important;
                        line-height:150% !important;
                }

}       @media only screen and (max-width: 480px){
                #templateBody .mcnTextContent,#templateBody .mcnTextContent p{
                        font-size:16px !important;
                        line-height:150% !important;
                }

}       @media only screen and (max-width: 480px){
                #templateFooter .mcnTextContent,#templateFooter .mcnTextContent p{
                        font-size:14px !important;
                        line-height:150% !important;
                }

}</style></head>
    <body style="height: 100%;margin: 0;padding: 0;width: 100%;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FAFAFA;">
        <center>
            <table align="center" border="0" cellpadding="0" cellspacing="0" height="100%" width="100%" id="bodyTable" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;height: 100%;margin: 0;padding: 0;width: 100%;background-color: #FAFAFA;">
                <tr>
                    <td align="center" valign="top" id="bodyCell" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;height: 100%;margin: 0;padding: 10px;width: 100%;border-top: 0;">
                        <!-- BEGIN TEMPLATE // -->
                                                <!--[if gte mso 9]>
                                                <table align="center" border="0" cellspacing="0" cellpadding="0" width="600" style="width:600px;">
                                                <tr>
                                                <td align="center" valign="top" width="600" style="width:600px;">
                                                <![endif]-->
                        <table border="0" cellpadding="0" cellspacing="0" width="100%" class="templateContainer" style="border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;border: 0;max-width: 600px !important;">
                            <tr>
                                <td valign="top" id="templatePreheader" style="background: #FAFAFA none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FAFAFA;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 9px;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
    <tbody class="mcnTextBlockOuter">
        <tr>
            <td valign="top" class="mcnTextBlockInner" style="padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
                <!--[if mso]>
                                <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;">
                                <tr>
                                <![endif]-->
                        
                                <!--[if mso]>
                                <td valign="top" width="390" style="width:390px;">
                                <![endif]-->
                <table align="left" border="0" cellpadding="0" cellspacing="0" style="max-width: 390px;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" width="100%" class="mcnTextContentContainer">
                    <tbody><tr>

                        <td valign="top" class="mcnTextContent" style="padding-top: 0;padding-left: 18px;padding-bottom: 9px;padding-right: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #656565;font-family: Helvetica;font-size: 12px;line-height: 150%;text-align: left;">


                        </td>
                    </tr>
                </tbody></table>
                                <!--[if mso]>
                                </td>
                                <![endif]-->

                                <!--[if mso]>
                                <td valign="top" width="210" style="width:210px;">
                                <![endif]-->
                <table align="left" border="0" cellpadding="0" cellspacing="0" style="max-width: 210px;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" width="100%" class="mcnTextContentContainer">
                    <tbody><tr>

                        <td valign="top" class="mcnTextContent" style="padding-top: 0;padding-left: 18px;padding-bottom: 9px;padding-right: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #656565;font-family: Helvetica;font-size: 12px;line-height: 150%;text-align: left;">

                            <a href="http://us10.campaign-archive2.com/?u=49a6a2e17b12be2c5c4dcb232&id=d1f16b3bfc&e=cb0e043b77" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;">View this email in your browser</a>
                        </td>
                    </tr>
                </tbody></table>
                                <!--[if mso]>
                                </td>
                                <![endif]-->

                                <!--[if mso]>
                                </tr>
                                </table>
                                <![endif]-->
            </td>
        </tr>
    </tbody>
</table></td>
                            </tr>
                            <tr>
                                <td valign="top" id="templateHeader" style="background: #FFFFFF none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FFFFFF;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 0;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
    <tbody class="mcnTextBlockOuter">
        <tr>
            <td valign="top" class="mcnTextBlockInner" style="padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
                <!--[if mso]>
                                <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;">
                                <tr>
                                <![endif]-->
                        
                                <!--[if mso]>
                                <td valign="top" width="NaN" style="width:NaNpx;">
                                <![endif]-->
                <table align="left" border="0" cellpadding="0" cellspacing="0" style="max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" width="100%" class="mcnTextContentContainer">
                    <tbody><tr>

                        <td valign="top" class="mcnTextContent" style="padding-top: 0;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">

                            <h1 style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 26px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=e409b7e3c3&e=cb0e043b77" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Haskell Weekly</a></h1>

                        </td>
                    </tr>
                </tbody></table>
                                <!--[if mso]>
                                </td>
                                <![endif]-->

                                <!--[if mso]>
                                </tr>
                                </table>
                                <![endif]-->
            </td>
        </tr>
    </tbody>
</table></td>
                            </tr>
                            <tr>
                                <td valign="top" id="templateBody" style="background: #FFFFFF none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FFFFFF;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 2px solid #EAEAEA;padding-top: 0;padding-bottom: 9px;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
    <tbody class="mcnTextBlockOuter">
        <tr>
            <td valign="top" class="mcnTextBlockInner" style="padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
                <!--[if mso]>
                                <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;">
                                <tr>
                                <![endif]-->
                        
                                <!--[if mso]>
                                <td valign="top" width="NaN" style="width:NaNpx;">
                                <![endif]-->
                <table align="left" border="0" cellpadding="0" cellspacing="0" style="max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" width="100%" class="mcnTextContentContainer">
                    <tbody><tr>

                        <td valign="top" class="mcnTextContent" style="padding-top: 0;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">


<h2 class="mc-toc-title" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=a97cd1c515&e=cb0e043b77" target="_blank" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Issue 38</a></h2>
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">Welcome to Haskell Weekly! <a href="http://news.us10.list-manage1.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=7ff80d2732&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Haskell</a> is an advanced, purely functional programming language. This is a weekly summary of what’s going on in its community. You can subscribe to <a href="http://news.us10.list-manage1.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=71ae3db842&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">the email newsletter</a> or <a href="/haskell-weekly.atom" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">the Atom feed</a>.</p>
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">Want to contribute to Haskell Weekly? Send us a message <a href="http://news.us10.list-manage1.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=c0e8c60038&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">on Twitter</a> or open an issue <a href="http://news.us10.list-manage1.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=ef00aafc3a&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">on GitHub</a>.</p>
<h2 id="news-from-the-haskell-community" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">News from the Haskell community</h2>
<ul>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=a5032412ba&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Brent Yorgey’s new programming languages course</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">My new PL course is now finished, and all the course materials are freely available. Working through all the exercises should be a great option for anyone wishing to learn some basics of programming language design and implementation.</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=f899a60958&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">CLaSH 0.7 released: GHC 8 support and more</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">Our company has been hired to do FPGA development work, and best of all, we get to use CLaSH. As a consequence, I cannot put as much time into CLaSH development as during my days as a PhD/PostDoc. However, we do now get to use CLaSH in industry! And as part of the contract there is time to find and fix bugs in CLaSH!</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=7b39fc2d7f&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">safe-prelude: a thought experiment</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">This is a thought experiment in a different point in the alternative prelude design space. After my blog post on readFile, I realized I was unhappy with the polymorphic nature of readFile in classy-prelude. Adding that with Haskell Pitfalls I’ve been itching to try something else.</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=ed6c0256bf&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Selecting a platform: JavaScript vs Elm vs PureScript vs GHCJS vs Scala.js</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">There are not many people who have worked on production applications in multiple frontend FP systems, and lived to tell the tale. So here goes, my guide to selecting a functional programming platform for the browser.</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=ada3543614&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">The design and use of QuickCheck</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">The typical examples you’ll find online have deceptively simple code. The examples make it hard to learn how their succinct tests are possible, and how to customize them when things go wrong. This guide puts it all together piece by piece so you can use QuickCheck with confidence.</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=2cbe3020ba&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Monads made difficult</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">This is a short, fast and analogy-free introduction to Haskell monads derived from a categorical perspective. This assumes you are familiar with Haskell and basic category theory.</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=c3766492ab&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Constraint kinds</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">In this blog post, I will show some examples of using the ConstraintKinds GHC extension. Classes and contexts were not first-class citizens in Haskell, but the introduction of the Constraint kind has changed this and allows them to be used as parameters of types.</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=d7c93625df&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">Expressive types, not oppressive types</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">Uncle Bob looks at advanced type systems and sees them as more oppressive rather than more expressive. Being able to describe whether or not a function can return null is an opportunity, not a constraint.</p>
</blockquote></li>
<li style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;"><p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;"><a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=8e87b29660&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">LiquidHaskell</a></p>
<blockquote style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">LiquidHaskell (LH) refines Haskell’s types with logical predicates that let you enforce critical properties at compile time.</p>
</blockquote></li>
</ul>
<h2 id="package-of-the-week" style="display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;">Package of the week</h2>
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">This week’s package of the week is <a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=3e6ad3eb68&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">dump-core</a>, a GHC plugin for rendering Core.</p>
<p style="margin: 10px 0;padding: 0;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #202020;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;">Send us a message <a href="http://news.us10.list-manage.com/track/click?u=49a6a2e17b12be2c5c4dcb232&id=0367f4afc3&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #2BAADF;font-weight: normal;text-decoration: underline;">on Twitter</a> to nominate next week’s package!</p><br>

                        </td>
                    </tr>
                </tbody></table>
                                <!--[if mso]>
                                </td>
                                <![endif]-->

                                <!--[if mso]>
                                </tr>
                                </table>
                                <![endif]-->
            </td>
        </tr>
    </tbody>
</table></td>
                            </tr>
                            <tr>
                                <td valign="top" id="templateFooter" style="background: #FAFAFA none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FAFAFA;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 9px;"><table border="0" cellpadding="0" cellspacing="0" width="100%" class="mcnTextBlock" style="min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
    <tbody class="mcnTextBlockOuter">
        <tr>
            <td valign="top" class="mcnTextBlockInner" style="padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;">
                <!--[if mso]>
                                <table align="left" border="0" cellspacing="0" cellpadding="0" width="100%" style="width:100%;">
                                <tr>
                                <![endif]-->
                        
                                <!--[if mso]>
                                <td valign="top" width="600" style="width:600px;">
                                <![endif]-->
                <table align="left" border="0" cellpadding="0" cellspacing="0" style="max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;" width="100%" class="mcnTextContentContainer">
                    <tbody><tr>

                        <td valign="top" class="mcnTextContent" style="padding-top: 0;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #656565;font-family: Helvetica;font-size: 12px;line-height: 150%;text-align: center;">

                            <em>Copyright © 2017 Haskell Weekly, All rights reserved.</em>
<br>
    You are receiving this email because you opted in at our website haskellweekly.news.
    <br>
    <br>
    <strong>Our mailing address is:</strong>
    <br>
    <div class="vcard"><span class="org fn">Haskell Weekly</span><div class="adr"><div class="street-address">13140 Coit Rd</div><div class="extended-address">Ste 405</div><span class="locality">Dallas</span>, <span class="region">TX</span>  <span class="postal-code">75240</span></div><br><a href="http://news.us10.list-manage.com/vcard?u=49a6a2e17b12be2c5c4dcb232&id=ffbbbbd930" class="hcard-download">Add us to your address book</a></div>
    <br>
    <br>
        Want to change how you receive these emails?<br>
    You can <a href="http://news.us10.list-manage.com/profile?u=49a6a2e17b12be2c5c4dcb232&id=ffbbbbd930&e=cb0e043b77" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;">update your preferences</a> or <a href="http://news.us10.list-manage.com/unsubscribe?u=49a6a2e17b12be2c5c4dcb232&id=ffbbbbd930&e=cb0e043b77&c=d1f16b3bfc" style="mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;">unsubscribe from this list</a>
    <br>
    <br>
 <a href="http://www.mailchimp.com/monkey-rewards/?utm_source=freemium_newsletter&utm_medium=email&utm_campaign=monkey_rewards&aid=49a6a2e17b12be2c5c4dcb232&afl=1"><img src="https://cdn-images.mailchimp.com/monkey_rewards/MC_MonkeyReward_15.png" border="0" alt="Email Marketing Powered by MailChimp" title="MailChimp Email Marketing" width="139" height="54"></a>
                        </td>
                    </tr>
                </tbody></table>
                                <!--[if mso]>
                                </td>
                                <![endif]-->

                                <!--[if mso]>
                                </tr>
                                </table>
                                <![endif]-->
            </td>
        </tr>
    </tbody>
</table></td>
                            </tr>
                        </table>
                                                <!--[if gte mso 9]>
                                                </td>
                                                </tr>
                                                </table>
                                                <![endif]-->
                        <!-- // END TEMPLATE -->
                    </td>
                </tr>
            </table>
        </center>
    <img src="http://news.us10.list-manage.com/track/open.php?u=49a6a2e17b12be2c5c4dcb232&id=d1f16b3bfc&e=cb0e043b77" height="1" width="1"></body>
</html>