initial commit, still work in progress

This commit is contained in:
Mahdi Dibaiee 2016-07-17 16:53:13 +04:30
commit 59ab00e9c2
80 changed files with 472 additions and 0 deletions

@ -0,0 +1 @@
Subproject commit 42a88fbcb6bd1d2c4dc18fae5e962bd34fb316a1

View File

@ -0,0 +1,26 @@
Copyright (c) 2006-2014 Alberto Ruiz and other contributors
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
* Neither the name of Alberto Ruiz nor the names of other contributors may
be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE AUTHORS OR CONTRIBUTORS BE LIABLE FOR ANY
DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,53 @@
name: hmatrix
version: 0.18.0.0
id: hmatrix-0.18.0.0-1d8fa7590dc64d386197097d7b3b924f
key: hmatr_7PZ22o8olec0bnj98RI2Zu
license: BSD3
maintainer: Alberto Ruiz
stability: provisional
homepage: https://github.com/albertoruiz/hmatrix
synopsis: Numeric Linear Algebra
description:
Linear systems, matrix decompositions, and other numerical computations based on BLAS and LAPACK.
.
Standard interface: "Numeric.LinearAlgebra".
.
Safer interface with statically checked dimensions: "Numeric.LinearAlgebra.Static".
.
Code examples: <http://dis.um.es/~alberto/hmatrix/hmatrix.html>
category: Math
author: Alberto Ruiz
exposed: True
exposed-modules:
Numeric.LinearAlgebra Numeric.LinearAlgebra.Devel
Numeric.LinearAlgebra.Data Numeric.LinearAlgebra.HMatrix
Numeric.LinearAlgebra.Static
hidden-modules: Internal.Vector Internal.Devel Internal.Vectorized
Internal.Matrix Internal.Foreign Internal.ST Internal.IO
Internal.Element Internal.Conversion Internal.LAPACK
Internal.Numeric Internal.Algorithms Internal.Random
Internal.Container Internal.Sparse Internal.Convolution
Internal.Chain Numeric.Vector Internal.CG Numeric.Matrix
Internal.Util Internal.Modular Internal.Static
trusted: False
import-dirs: /Users/mahdi/Documents/Workshop/sibe/.stack-work/install/x86_64-osx/lts-6.7/7.10.3/lib/x86_64-osx-ghc-7.10.3/hmatrix-0.18.0.0-7PZ22o8olec0bnj98RI2Zu
library-dirs: /Users/mahdi/Documents/Workshop/sibe/.stack-work/install/x86_64-osx/lts-6.7/7.10.3/lib/x86_64-osx-ghc-7.10.3/hmatrix-0.18.0.0-7PZ22o8olec0bnj98RI2Zu
/opt/local/lib/ /usr/local/lib/
data-dir: /Users/mahdi/Documents/Workshop/sibe/.stack-work/install/x86_64-osx/lts-6.7/7.10.3/share/x86_64-osx-ghc-7.10.3/hmatrix-0.18.0.0
hs-libraries: HShmatrix-0.18.0.0-7PZ22o8olec0bnj98RI2Zu
extra-libraries:
blas lapack
include-dirs: /opt/local/include/ /usr/local/include/
depends:
array-0.5.1.0-960bf9ae8875cc30355e086f8853a049
base-4.8.2.0-cc43d8e06aa74e9c4c0132becc49ee25
binary-0.7.5.0-bb2dcbe8d4c53898daa6ddc1a04a77a3
bytestring-0.10.6.0-04b5cc1d05f993b3b016543ca2863add
deepseq-1.4.1.1-8eec8f9bea2efc2500f63544ec6ca569
random-1.1-7b52ac9c2fd71a09f8ea932648ebfada
split-0.2.3.1-6d0063c12972868a1e069995047d6884
storable-complex-0.2.2-5d724e6255914e391bee90b30a4cef13
vector-0.11.0.0-3c85dee988950ea88ba0cba31473444f
frameworks: Accelerate
haddock-interfaces: /Users/mahdi/Documents/Workshop/sibe/.stack-work/install/x86_64-osx/lts-6.7/7.10.3/doc/hmatrix-0.18.0.0/hmatrix.haddock
haddock-html: /Users/mahdi/Documents/Workshop/sibe/.stack-work/install/x86_64-osx/lts-6.7/7.10.3/doc/hmatrix-0.18.0.0

View File

@ -0,0 +1,38 @@
Configuring MonadRandom-0.4.2.3...
Building MonadRandom-0.4.2.3...
Preprocessing library MonadRandom-0.4.2.3...
[1 of 2] Compiling Control.Monad.Random.Class ( Control/Monad/Random/Class.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Control/Monad/Random/Class.o )
[2 of 2] Compiling Control.Monad.Random ( Control/Monad/Random.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Control/Monad/Random.o )
Control/Monad/Random.hs:54:1: Warning:
Module Control.Monad.Error is deprecated:
Use Control.Monad.Except instead
Control/Monad/Random.hs:70:1: Warning:
The import of Data.Monoid is redundant
except perhaps to import instances from Data.Monoid
To import instances alone, use: import Data.Monoid()
Control/Monad/Random.hs:206:11: Warning:
In the use of type constructor or class Error
(imported from Control.Monad.Error, but defined in Control.Monad.Trans.Error):
Deprecated: "Use Control.Monad.Trans.Except instead"
Control/Monad/Random.hs:206:51: Warning:
In the use of type constructor or class ErrorT
(imported from Control.Monad.Error, but defined in Control.Monad.Trans.Error):
Deprecated: "Use Control.Monad.Trans.Except instead"
Control/Monad/Random.hs:251:11: Warning:
In the use of type constructor or class Error
(imported from Control.Monad.Error, but defined in Control.Monad.Trans.Error):
Deprecated: "Use Control.Monad.Trans.Except instead"
Control/Monad/Random.hs:251:53: Warning:
In the use of type constructor or class ErrorT
(imported from Control.Monad.Error, but defined in Control.Monad.Trans.Error):
Deprecated: "Use Control.Monad.Trans.Except instead"
In-place registering MonadRandom-0.4.2.3...
Installing library in
/Users/mahdi/.stack/snapshots/x86_64-osx/lts-6.7/7.10.3/lib/x86_64-osx-ghc-7.10.3/MonadRandom-0.4.2.3-4XRZwPV1MjC69wlAshwzrw
Registering MonadRandom-0.4.2.3...

View File

@ -0,0 +1,80 @@
Preprocessing library hmatrix-0.18.0.0...
[ 1 of 28] Compiling Internal.Vector ( src/Internal/Vector.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Vector.o )
[ 2 of 28] Compiling Internal.Devel ( src/Internal/Devel.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Devel.o )
[ 3 of 28] Compiling Internal.Vectorized ( src/Internal/Vectorized.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Vectorized.o )
[ 4 of 28] Compiling Internal.Matrix ( src/Internal/Matrix.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Matrix.o )
[ 5 of 28] Compiling Internal.Conversion ( src/Internal/Conversion.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Conversion.o )
[ 6 of 28] Compiling Internal.Foreign ( src/Internal/Foreign.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Foreign.o )
[ 7 of 28] Compiling Internal.ST ( src/Internal/ST.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/ST.o )
[ 8 of 28] Compiling Internal.Element ( src/Internal/Element.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Element.o )
[ 9 of 28] Compiling Internal.IO ( src/Internal/IO.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/IO.o )
[10 of 28] Compiling Internal.LAPACK ( src/Internal/LAPACK.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/LAPACK.o )
[11 of 28] Compiling Internal.Numeric ( src/Internal/Numeric.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Numeric.o )
[12 of 28] Compiling Internal.Sparse ( src/Internal/Sparse.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Sparse.o )
[13 of 28] Compiling Numeric.LinearAlgebra.Devel ( src/Numeric/LinearAlgebra/Devel.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Numeric/LinearAlgebra/Devel.o )
[14 of 28] Compiling Internal.Algorithms ( src/Internal/Algorithms.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Algorithms.o )
[15 of 28] Compiling Internal.Container ( src/Internal/Container.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Container.o )
[16 of 28] Compiling Internal.Random ( src/Internal/Random.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Random.o )
[17 of 28] Compiling Internal.Convolution ( src/Internal/Convolution.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Convolution.o )
[18 of 28] Compiling Internal.Chain ( src/Internal/Chain.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Chain.o )
[19 of 28] Compiling Numeric.Vector ( src/Numeric/Vector.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Numeric/Vector.o )
[20 of 28] Compiling Internal.CG ( src/Internal/CG.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/CG.o )
[21 of 28] Compiling Numeric.Matrix ( src/Numeric/Matrix.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Numeric/Matrix.o )
[22 of 28] Compiling Internal.Util ( src/Internal/Util.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Util.o )
[23 of 28] Compiling Internal.Modular ( src/Internal/Modular.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Modular.o )
[24 of 28] Compiling Numeric.LinearAlgebra.Data ( src/Numeric/LinearAlgebra/Data.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Numeric/LinearAlgebra/Data.o )
[25 of 28] Compiling Numeric.LinearAlgebra ( src/Numeric/LinearAlgebra.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Numeric/LinearAlgebra.o )
[26 of 28] Compiling Numeric.LinearAlgebra.HMatrix ( src/Numeric/LinearAlgebra/HMatrix.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Numeric/LinearAlgebra/HMatrix.o )
[27 of 28] Compiling Internal.Static ( src/Internal/Static.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Internal/Static.o )
[28 of 28] Compiling Numeric.LinearAlgebra.Static ( src/Numeric/LinearAlgebra/Static.hs, .stack-work/dist/x86_64-osx/Cabal-1.22.5.0/build/Numeric/LinearAlgebra/Static.o )
clang: warning: -O4 is equivalent to -O3
clang: warning: -O4 is equivalent to -O3
clang: warning: -O4 is equivalent to -O3
src/Internal/C/vector-aux.c:574:14:
warning: absolute value function 'abs' given an argument of type 'const int64_t' (aka 'const long long') but has parameter of type 'int' which may cause truncation of value [-Wabsolute-value]
OP(3,abs)
^
src/Internal/C/vector-aux.c:574:14:
note: use function 'labs' instead
OP(3,abs)
^~~
labs
src/Internal/C/vector-aux.c:504:53: note: expanded from macro 'OP'
#define OP(C,F) case C: { for(k=0;k<xn;k++) rp[k] = F(xp[k]); OK }
^
src/Internal/C/vector-aux.c:941:9:
warning: randomVector is not thread-safe in OSX and FreeBSD [-W#pragma-messages]
#pragma message "randomVector is not thread-safe in OSX and FreeBSD"
^
2 warnings generated.
clang: warning: -O4 is equivalent to -O3
src/Internal/C/vector-aux.c:574:14:
warning: absolute value function 'abs' given an argument of type 'const int64_t' (aka 'const long long') but has parameter of type 'int' which may cause truncation of value [-Wabsolute-value]
OP(3,abs)
^
src/Internal/C/vector-aux.c:574:14:
note: use function 'labs' instead
OP(3,abs)
^~~
labs
src/Internal/C/vector-aux.c:504:53: note: expanded from macro 'OP'
#define OP(C,F) case C: { for(k=0;k<xn;k++) rp[k] = F(xp[k]); OK }
^
src/Internal/C/vector-aux.c:941:9:
warning: randomVector is not thread-safe in OSX and FreeBSD [-W#pragma-messages]
#pragma message "randomVector is not thread-safe in OSX and FreeBSD"
^
2 warnings generated.
ld: warning: directory not found for option '-L/opt/local/lib/'
In-place registering hmatrix-0.18.0.0...
Installing library in
/Users/mahdi/Documents/Workshop/sibe/.stack-work/install/x86_64-osx/lts-6.7/7.10.3/lib/x86_64-osx-ghc-7.10.3/hmatrix-0.18.0.0-7PZ22o8olec0bnj98RI2Zu
Registering hmatrix-0.18.0.0...

30
LICENSE Normal file
View File

@ -0,0 +1,30 @@
Copyright Author name here (c) 2016
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above
copyright notice, this list of conditions and the following
disclaimer in the documentation and/or other materials provided
with the distribution.
* Neither the name of Author name here nor the names of other
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

2
Setup.hs Normal file
View File

@ -0,0 +1,2 @@
import Distribution.Simple
main = defaultMain

BIN
app/Main Executable file

Binary file not shown.

BIN
app/Main.hi Normal file

Binary file not shown.

27
app/Main.hs Normal file
View File

@ -0,0 +1,27 @@
module Main where
import Lib
import Numeric.LinearAlgebra
import Data.List
import Debug.Trace
-- 1x2
-- 2x3 + 1x3
-- 3x1 + 1x1
main :: IO ()
main =
let learning_rate = 0.5
ih = randomLayer 0 (2, 10)
ho = randomLayer 1 (10, 1)
network = ih :- O ho
inputs = [vector [0, 1], vector [1, 1], vector [1, 0], vector [0, 0]]
-- result = forward input network
labels = [vector [1], vector [0], vector [1], vector [0]]
updated_network = session inputs network labels 0.01 10000
-- updated_network = train (head inputs) network (head labels) 0.5
results = map (\x -> forward x updated_network) inputs
in print results

BIN
app/Main.o Normal file

Binary file not shown.

41
sibe.cabal Normal file
View File

@ -0,0 +1,41 @@
name: sibe
version: 0.1.0.0
synopsis: Initial project template from stack
description: Please see README.md
homepage: https://github.com/githubuser/sibe#readme
license: BSD3
license-file: LICENSE
author: Author name here
maintainer: example@example.com
copyright: 2016 Author name here
category: Web
build-type: Simple
-- extra-source-files:
cabal-version: >=1.10
library
hs-source-dirs: src
exposed-modules: Lib
build-depends: base >= 4.7 && < 5
default-language: Haskell2010
executable sibe-exe
hs-source-dirs: app
main-is: Main.hs
ghc-options: -threaded -rtsopts -with-rtsopts=-N
build-depends: base
, sibe
default-language: Haskell2010
test-suite sibe-test
type: exitcode-stdio-1.0
hs-source-dirs: test
main-is: Spec.hs
build-depends: base
, sibe
ghc-options: -threaded -rtsopts -with-rtsopts=-N
default-language: Haskell2010
source-repository head
type: git
location: https://github.com/githubuser/sibe

BIN
src/Lib.hi Normal file

Binary file not shown.

100
src/Lib.hs Normal file
View File

@ -0,0 +1,100 @@
{-# LANGUAGE GADTs #-}
{-# LANGUAGE BangPatterns #-}
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE TypeOperators #-}
module Lib
(Network(..),
Layer,
Input,
Output,
forward,
randomLayer,
train,
session,
) where
import Numeric.LinearAlgebra
import Control.Monad.Random
import System.Random
import Debug.Trace
import Data.List (foldl')
type LearningRate = Double
type Input = Vector Double
type Output = Vector Double
data Layer = L { biases :: !(Vector Double)
, nodes :: !(Matrix Double)
} deriving (Show)
data Network = O Layer
| Layer :- Network
deriving (Show)
infixr 5 :-
runLayer :: Input -> Layer -> Output
runLayer input (L !biases !weights) = input <# weights + biases
forward :: Input -> Network -> Output
forward input (O l) = cmap logistic $ runLayer input l
forward input (l :- n) = forward (cmap logistic $ runLayer input l) n
randomLayer :: Seed -> (Int, Int) -> Layer
randomLayer seed (wr, wc) =
let weights = uniformSample seed wr $ replicate wc (-1, 1)
biases = randomVector seed Uniform wc * 2 - 1
in L biases weights
logistic :: Double -> Double
logistic x = 1 / (1 + exp (-x))
logistic' :: Double -> Double
logistic' x = logistic x / max 1e-8 (1 - logistic x)
train :: Input
-> Network
-> Output -- target
-> Double -- learning rate
-> Network -- network's output
train input network target alpha = fst $ run input network
where
run :: Input -> Network -> (Network, Vector Double)
run input (O l@(L biases weights)) =
let y = runLayer input l
o = cmap logistic y
delta = o - target
de = delta * cmap logistic' y
biases' = biases - scale alpha de
weights' = weights - scale alpha (input `outer` de) -- small inputs learn slowly
layer = L biases' weights' -- updated layer
pass = weights #> de
-- pass = weights #> de
in (O layer, pass)
run input (l@(L biases weights) :- n) =
let y = runLayer input l
o = cmap logistic y
(n', delta) = run o n
de = delta * cmap logistic' y
biases' = biases - scale alpha de
weights' = weights - scale alpha (input `outer` de)
layer = L biases' weights'
pass = weights #> de
-- pass = weights #> de
in (layer :- n', pass)
session :: [Input] -> Network -> [Output] -> Double -> Int -> Network
session inputs network labels alpha epochs =
foldl' iter network [0..n * epochs]
where
iter net i =
let n = length inputs - 1
index = i `mod` n
input = inputs !! index
label = labels !! index
in train input net label alpha

BIN
src/Lib.o Normal file

Binary file not shown.

72
stack.yaml Normal file
View File

@ -0,0 +1,72 @@
# This file was automatically generated by 'stack init'
#
# Some commonly used options have been documented as comments in this file.
# For advanced use and comprehensive documentation of the format, please see:
# http://docs.haskellstack.org/en/stable/yaml_configuration/
# Resolver to choose a 'specific' stackage snapshot or a compiler version.
# A snapshot resolver dictates the compiler version and the set of packages
# to be used for project dependencies. For example:
#
# resolver: lts-3.5
# resolver: nightly-2015-09-21
# resolver: ghc-7.10.2
# resolver: ghcjs-0.1.0_ghc-7.10.2
# resolver:
# name: custom-snapshot
# location: "./custom-snapshot.yaml"
resolver: lts-6.7
# User packages to be built.
# Various formats can be used as shown in the example below.
#
# packages:
# - some-directory
# - https://example.com/foo/bar/baz-0.0.2.tar.gz
# - location:
# git: https://github.com/commercialhaskell/stack.git
# commit: e7b331f14bcffb8367cd58fbfc8b40ec7642100a
# - location: https://github.com/commercialhaskell/stack/commit/e7b331f14bcffb8367cd58fbfc8b40ec7642100a
# extra-dep: true
# subdirs:
# - auto-update
# - wai
#
# A package marked 'extra-dep: true' will only be built if demanded by a
# non-dependency (i.e. a user package), and its test suites and benchmarks
# will not be run. This is useful for tweaking upstream packages.
packages:
- location:
git: git@github.com:albertoruiz/hmatrix.git
commit: 42a88fbcb6bd1d2c4dc18fae5e962bd34fb316a1
subdirs:
- packages/base
#- '.'
# Dependency packages to be pulled from upstream that are not in the resolver
# (e.g., acme-missiles-0.3)
extra-deps: []
# Override default flag values for local packages and extra-deps
flags: {}
# Extra package databases containing global packages
extra-package-dbs: []
# Control whether we use the GHC we find on the path
# system-ghc: true
#
# Require a specific version of stack, using version ranges
# require-stack-version: -any # Default
# require-stack-version: ">=1.1"
#
# Override the architecture used by stack, especially useful on Windows
# arch: i386
# arch: x86_64
#
# Extra directories used by stack for building
# extra-include-dirs: [/path/to/dir]
# extra-lib-dirs: [/path/to/dir]
#
# Allow a newer minor version of GHC than the snapshot specifies
# compiler-check: newer-minor

2
test/Spec.hs Normal file
View File

@ -0,0 +1,2 @@
main :: IO ()
main = putStrLn "Test suite not yet implemented"