diff --git a/users/simon/modules/ghci.nix b/users/simon/modules/ghci.nix index 30d365f..e776ba0 100644 --- a/users/simon/modules/ghci.nix +++ b/users/simon/modules/ghci.nix @@ -4,8 +4,10 @@ home.file.".ghc/ghci.conf".text = /* haskell */ '' :seti -XOverloadedStrings - -- Lambdabot (from https://wiki.haskell.org/GHC/GHCi#Lambdabot_Commands) + -- IDE-like features (from https://wiki.haskell.org/GHC/GHCi) dotGHCI_escapeShellArg arg = "'" ++ concatMap (\c -> if c == '\''' then "'\\'''" else [c]) arg ++ "'" + + -- Lambdabot lb s1 s2 = return $ ":!lambdabot -n -e " ++ dotGHCI_escapeShellArg s1 ++ "\\ " ++ dotGHCI_escapeShellArg s2 :def! lb lb "" -- runs arbitrary lambdabot commands :def! pl lb "pl" -- converts code to point-free (aka pointless) form @@ -16,6 +18,11 @@ :def! instances lb "instances" -- finds all instances of a given type class :def! src lb "src" -- tries to find the source code for the given identifier :def! oeis lb "oeis" -- looks up the On-Line Encyclopedia of Integer Sequences (https://oeis.org/) + + -- Hoogle + :def! hoogle return . (":!hoogle -q --count=15 --color " ++) . dotGHCI_escapeShellArg + :def! search return . (":!hoogle -q --count=3 --color " ++) . dotGHCI_escapeShellArg + :def! doc return . (":!hoogle -q --color --info " ++) . dotGHCI_escapeShellArg ''; home.file.".haskeline".text = '' @@ -27,6 +34,7 @@ home.packages = with pkgs; [ # GHC has a huge closure size, instead use nix-shell (ad-hoc or per-project) #ghc + #haskellPackages.hoogle #lambdabot ]; }