This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | {-# LANGUAGE GADTs, TypeFamilies, EmptyDataDecls #-} | |
| {- | |
| A Haskell-based implementation of the monadic semantics for the | |
| simply-typed Call-By-Name computational lambda calculus, following | |
| Moggi's 'Computational lambda-calculus and monads' (1989) (technical report version) | |
| but for the typed calculus (rather than untyped as in this paper). | |
| Category theory seminar, Programming Languages and Systems group, | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | ----------------------------- | |
| -- Domain.hs | |
| type SessionId = Text | |
| type UserId = Text | |
| type User = Text | |
| class (Monad m) => UserRepo m where | |
| getUserById :: UserId -> m User | 
Ripgrep is a fast search tool like grep. It's mostly a drop-in replacement for ag, also know as the Silver Searcher.
helm-ag is a fantastic package for Emacs that allows you to display search results in a buffer.
You can also jump to locations of matches. Despite the name, helm-ag works with ripgrep (rg) as well
as with ag.
- Install IntelliJ + Scala Plugin
- Don’t do the Coursera courses yet.
- Don’t do the “red book” Functional Programming in Scala yet.
- Do: http://underscore.io/books/
    - Essential Scala
- Essential Play
- Essential Slick
 
- Do Scala for the Impatient: https://www.amazon.com/Scala-Impatient-Cay-S-Horstmann/dp/0321774094
- The Neophyte’s Guide to Scala http://danielwestheide.com/scala/neophytes.html
GHC API lets you process Haskell sources, and (among other) specify code generation and linking level. For example:
- (1) no codegen & no link
- (2) bytecode generation & link in memory
- (3) machine code generation & linking output binaries
For code analysis purposes, based on generating the typechecked AST, option (1) suffices most of the time. There are some situations in which it doesn't:
- TemplateHaskell (TH) splice needs to execute code (at compile time) from an imported module: the imported module must be available in compiled form, so either (2) or (3) is needed. Example: in $([|$(foo)|]),foowill be evaluated at compile-time.
- Code uses FFI imports. For this one would expect that (2) is needed (see checkCOrAsmOrLlvmOrInterpinTcForeign.hs), but actually unless it is used (say by TH, see below), even (1) works too (see the wrappercheckCg).
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | #!/bin/bash | |
| # | |
| # Copyright 2016-2021 Martin Goellnitz | |
| # | |
| # This program is free software: you can redistribute it and/or modify | |
| # it under the terms of the GNU General Public License as published by | |
| # the Free Software Foundation, either version 3 of the License, or | |
| # (at your option) any later version. | |
| # | |
| # This program is distributed in the hope that it will be useful, | 
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | {-# LANGUAGE MultiParamTypeClasses #-} | |
| {-# LANGUAGE FlexibleInstances #-} | |
| {-# LANGUAGE OverloadedStrings #-} | |
| {-# LANGUAGE DataKinds #-} | |
| {-# LANGUAGE DeriveGeneric #-} | |
| {-# LANGUAGE TypeOperators #-} | |
| module Sand where | |
| import Data.Aeson |