summaryrefslogtreecommitdiff
path: root/snippets/haskell.snippets
blob: 585d35222bfbc0d1add72e9cacdef643b344fb63 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
snippet lang
	{-# LANGUAGE ${0:OverloadedStrings} #-}
snippet haddock
	{-# OPTIONS_HADDOCK ${0:hide} #-}
snippet ghc
	{-# OPTIONS_GHC ${0:-fno-warn-unused-imports} #-}
snippet inline
	{-# INLINE ${0:name} #-}
snippet info
	-- |
	-- Module      :  ${1:`substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')`}
	-- Copyright   :  ${2:Author} ${3:2011-2012}
	-- License     :  ${4:BSD3}
	--
	-- Maintainer  :  ${5:email@something.com}
	-- Stability   :  ${6:experimental}
	-- Portability :  ${7:unknown}
	--
	-- ${0:Description}
	--
snippet imp
	import ${0:Data.Text}
snippet import
	import ${0:Data.Text}
snippet import2
	import ${1:Data.Text} (${0:head})
snippet impq
	import qualified ${1:Data.Text} as ${0:T}
snippet importq
	import qualified ${1:Data.Text} as ${0:T}
snippet inst
	instance ${1:Monoid} ${2:Type} where
		${0}
snippet ty
	type ${1:Type} = ${0:Type}
snippet type
	type ${1:Type} = ${0:Type}
snippet da
	data ${1:Type} = ${2:$1} ${0:Int}
snippet data
	data ${1:Type} = ${2:$1} ${0:Int}
snippet newtype
	newtype ${1:Type} = ${2:$1} ${0:Int}
snippet class
	class ${1:Class} a where
		${0}
snippet module
	module `substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')` (
	) where
	`expand('%') =~ 'Main' ? "\nmain :: IO ()\nmain = undefined" : ""`

snippet mod
	module `substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')`
		( ${1}
		) where

	`expand('%') =~ 'Main' ? "\nmain :: IO ()\nmain = undefined" : ""`
snippet main
	main :: IO ()
	main = ${0:undefined}
snippet const
	${1:name} :: ${2:a}
	$1 = ${0:undefined}
snippet fn
	${1:fn} :: ${2:a} -> ${3:a}
	$1 ${4} = ${0:undefined}
snippet fn0
	${1:fn} :: ${2:a}
	$1 = ${0:undefined}
snippet fn1
	${1:fn} :: ${2:a} -> ${3:a}
	$1 ${4} = ${0:undefined}
snippet fn2
	${1:fn} :: ${2:a} -> ${3:a} -> ${4:a}
	$1 ${5} = ${0:undefined}
snippet fn3
	${1:fn} :: ${2:a} -> ${3:a} -> ${4:a} -> ${5:a}
	$1 ${6} = ${0:undefined}
snippet => "Type constraint"
	(${1:Class} ${2:a}) => $2
snippet ap
	${1:map} ${2:fn} ${0:list}
snippet \
	\\${1:x} -> ${0:expression}
snippet (\
	(\\${1:x} -> ${0:expression})
snippet <-
	${1:a} <- ${0:m a}
snippet ->
	${1:m a} -> ${0:a}
snippet tup
	(${1:a}, ${0:b})
snippet tup2
	(${1:a}, ${2:b}, ${0:c})
snippet tup3
	(${1:a}, ${2:b}, ${3:c}, ${0:d})
snippet rec
	${1:Record} { ${2:recFieldA} = ${3:undefined}
				, ${4:recFieldB} = ${0:undefined}
				}
snippet case
	case ${1:something} of
		${2} -> ${0}
snippet let
	let ${1} = ${2}
	in ${3}
snippet where
	where
		${1:fn} = ${0:undefined}
snippet spec
	module `substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')` (main, spec) where

	import Test.Hspec
	import Test.QuickCheck

	main :: IO ()
	main = hspec spec

	spec :: Spec
	spec =
		describe "${1}" $ do
			it "${2}" $
				$0
snippet specf
	module `substitute(substitute(expand('%:r'), '[/\\]','.','g'),'^\%(\l*\.\)\?','','')` (main, spec) where

	import Test.Hspec
	import Test.Hspec.Runner (configFastFail, defaultConfig, hspecWith)

	main :: IO ()
	main = hspecWith defaultConfig {configFastFail = True} spec

	spec :: Spec
	spec =
		describe "${1}" $ do
			it "${2}" $
				$0
snippet desc
	describe "${1}" $ do
		$0
snippet it
	it "${1}" $
		$0
snippet itp
	it "${1}" $ property $
		$0
snippet sb
	\`shouldBe\` $0
snippet doc
	{-| ${0}
	-}