Popularity
4.6
Declining
Activity
0.0
Stable
5
5
0
Monthly Downloads: 7
Programming language: Haskell
License: MIT License
Tags:
Development
Latest version: v1.0
Lambdajudge alternatives and similar packages
Based on the "Development" category.
Alternatively, view Lambdajudge alternatives based on common mentions on social networks and blogs.
-
cabal-install-parsers
Scripts and instructions for using CI services (e.g. Travis CI or Appveyor) with multiple GHC configurations -
fourmolu
A fourk of ormolu that uses four space indentation and allows arbitrary configuration. Don't like it? PRs welcome!
InfluxDB - Purpose built for real-time analytics at any scale.
InfluxDB Platform is powered by columnar analytics, optimized for cost-efficient storage, and built with open data standards.
Promo
www.influxdata.com
Do you think we are missing an alternative of Lambdajudge or a related project?
Popular Comparisons
README
Lambdajudge
Lambdajudge is a library to easily host programming contests in haskell. This work is done as a project in Functional Programming course.
How to use
import Lambdajudge
-- | Check if mueval is present, as lambdajudge needs mueval executable to run
check = muevalAvlbl --should return true. Only then can proceed using other functions.
-- | creating a sample Contest. input and output files are in the project directory
createContest :: IO Problem
createContest = do
let dir = "test/contest1/Q1/"
--Creating first problem of contest
testCase1_1 <- getFileContents (dir </> "input00.txt")
output1_1 <- getFileContents (dir </> "output00.txt")
testCase2_2 <- getFileContents (dir </> "input02.txt")
output2_2 <- getFileContents (dir </> "output02.txt")
problemStatement1 <- getFileContents (dir </> "ProblemStatement1")
problemSetterCode1 <- getFileContents (dir </> "Solution1/Solution.hs")
--Creating second problem of contest
testCase2_1 <- getFileContents (dir </> "input10.txt")
output2_1 <- getFileContents (dir </> "output10.txt")
testCase2_1 <- getFileContents (dir </> "input12.txt")
output2_1 <- getFileContents (dir </> "output12.txt")
problemStatement2 <- getFileContents (dir </> "ProblemStatement2")
problemSetterCode2 <- getFileContents (dir </> "Solution2/Solution.hs")
-- can further repeat to include more problems.
let contest = [Problem problemStatement1 [(testCase1_1,output1_1),(testCase1_2,output1_2)] problemSetterCode1 5,
Problem problemStatement2 [(testCase2_1,output2_1),(testCase2_2,output2_2)] problemSetterCode2 3]
return contest
---run submitted solution on problem testcase
evaluate = do
prob1 <- createContest!!1 -- evaluating on first problem of the contest
runLJMonad $ gradeSubmission prob1 "SubmittedSolution.hs"
Features
- Submitted code is run in mueval, which avoids attacks like unsafePerformIO etc..
- Only runs the "solution" function of type String -> String. Hence, code has to be pure. So Type safety ensures safety of execution.
- provides logging and error handling for debugging purposes
Install from Hackage:
$ cabal install Lambdajudge
Install from unpacked release tarball or source repo:
$ cd Lambdajudge
$ cabal install
Just play with it without installing:
$ cabal build
$ cabal repl
Team members
- Ankit Kumar (15111010)
- Venugopal Reddy (14111043)
- Safal Pandita (15111040)
*Note that all licence references and agreements mentioned in the Lambdajudge README section above
are relevant to that project's source code only.