marvin alternatives and similar packages
Based on the "Development" category.
Alternatively, view marvin alternatives based on common mentions on social networks and blogs.
-
stgi
A user-centric visual STG implementation to help understand GHC/Haskell's execution model. -
haskell-lsp
Haskell library for the Microsoft Language Server Protocol -
structured-haskell-mode
Structured editing minor mode for Haskell in Emacs -
criterion
A powerful but simple library for measuring the performance of Haskell code. -
cabal-install-parsers
Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations -
inline-c
Write Haskell source files including C code inline. No FFI required. -
inline-java
Haskell/Java interop via inline Java code in Haskell modules. -
gi-atk
Generate Haskell bindings for GObject-Introspection capable libraries -
fourmolu
A fourk of ormolu that uses four space indentation and allows arbitrary configuration. Don't like it? PRs welcome! -
scion
OLD, DEPRECATED: Use this instead https://github.com/haskell/haskell-ide-engine -
lambdabot-core
A friendly IRC bot and apprentice coder, written in Haskell.
Static code analysis for 29 languages.
Do you think we are missing an alternative of marvin or a related project?
Popular Comparisons
README
Marvin, the paranoid bot (β stage)
Marvin is an attempt to combine the ease of use of hubot with the typesafety and easy syntax of Haskell and the performance gains from compiled languages.
Installing and using marvin
The verbose documentation can be found on readthedocs https://marvin.readthedocs.io. It should hopefully answer all your questions.
Installation instructions are on this documentation page.
Links
- Documentation
- Hackage
- Repository
- Bugtracker
- Documentation repository and bugtracker
- Slack channel (signup instructions)
A teaser
module MyScript where
import Marvin.Prelude
script :: (IsAdapter a, SupportsFiles a) => ScriptInit a
script = defineScript "my-script" $ do
hear "sudo (.+)" $ do
match <- getMatch
reply $(isL "All right, i'll do #{match !! 1}")
respond "repeat" $ do
message <- getMessage
send $(isL "You wrote #{message}")
respond "what is in file ([\\w\\._/-]+)\\??" $ do
match <- getMatch
let file = match !! 1
contents <- liftIO $ readFile file
send contents
respond "upload file ([\\w\\._/-]+)" $ do
[_, filepath] <- getMatch
chan <- getChannel
f <- sendFile filepath
case res of
Left err -> send $(isL "Failed to share file: #{err}")
Right _ -> send "File successfully uploaded"
enterIn "random" $ do
user <- getUser
send $(isL "Hello #{user^.username} welcome to the random channel!")
fileSharedIn "announcements" $ do
file <- getFile
safeFileToDir file "shared-files"
Testing and Talking
There's a slack channel where you can ask questions or play around with a test instance of marvin.
It's currently invite-only, so send me an email if you would like to join.
Status of the project
I try to respond to issues and I am happy to review and merge pull requests. I have some more features planned but I don't yet know when I'll get the time to implement them.
Maintenance Level: Happy to merge
Accepting maintainers: Yes
For information on the meaning of this see commercialhaskell guide to OSS maintenance
Issues and errors
If you are a marvin user, please report any error, issues, or improvement suggestions to the issue section or write me an email.
Testing
I welcome anybody who tests marvin by deploying it. Especially testing different adapters is a huge help.
Hacking
If you want to hack on marvin, feel free to do so and send me your changes as pull requests.
Current hot places to get started:
- Convenient HTTP requests API in
Marvin.Util.HTTP
. - Convenient JSON handling API in
Marvin.Util.JSON
. - New adapters as submodules of
Marvin.Adapter
. - A basic library of scripts (maybe as a
Marvin.Scripts.Prelude
module?) (inspiration: https://github.com/github/hubot-scripts)