about summary refs log tree commit diff
path: root/pkgs/development/compilers/idris/idris.context
blob: fad6749988358470d922cd0aa08094e698e10b17 (plain) (blame)
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586

Context:

[Missed SCTrans source!
eb@cs.st-andrews.ac.uk**20090511120315] 

[Put RunIO in a more sensible place
eb@cs.st-andrews.ac.uk**20090426144418] 

[Update cabal details
eb@cs.st-andrews.ac.uk**20090426144101] 

[Convert things which look like Nats to Nats for optimisation
eb@cs.st-andrews.ac.uk**20090423220551] 

[Basic Nat optimisation
eb@cs.st-andrews.ac.uk**20090423185609] 

[need to check if arguments are still needed to discriminate on collapsing
eb@cs.st-andrews.ac.uk**20090309174234] 

[Using knowledge of collapsing to help forcing
eb@cs.st-andrews.ac.uk**20090309153744] 

[Make transforms part of state, and display of optimised terms
eb@cs.st-andrews.ac.uk**20090309145419] 

[Prettier time formatting
eb@cs.st-andrews.ac.uk**20090309131334] 

[Don't just crash if the command is invalid...
eb@cs.st-andrews.ac.uk**20090309125424] 

[Added global options
eb@cs.st-andrews.ac.uk**20090309124541
 :o sets, :o f- or :o f+ to turn forcing/collapsing off/on
 :o r- or :o r+ to turn display of compile/run times off/on
] 

[Added collapsing optimisation
eb@cs.st-andrews.ac.uk**20090309112238] 

[Added unused argument elimination
eb@cs.st-andrews.ac.uk**20090309004741
 Can fit within the optimisation framework, but you need to remember
 the transforms so far at each definition for maximum effect.
] 

[(Failed) effort at argument erasure
eb@cs.st-andrews.ac.uk**20090308222948
 Trying to get it into the same framework as constructor transformations,
 but it isn't going to happen that easily.
] 

[Added forcing optimisation
eb@cs.st-andrews.ac.uk**20090308164110] 

[Decide tactic works out its arguments
eb@cs.st-andrews.ac.uk**20090305165743] 

[Allow redefining of do notation
eb@cs.st-andrews.ac.uk**20090228164646] 

[lookupIdx fix
eb@cs.st-andrews.ac.uk**20090227231257] 

[Added 'using' syntax
eb@cs.st-andrews.ac.uk**20090226003439
 For blocks where lots of things use the same implicit arguments, saving
 lots of typing and clutter.
 (also allowed forward declaration of datatypes)
] 

[Fix conflict
eb@cs.st-andrews.ac.uk**20090107121727] 

[Laziness annotations
eb@cs.st-andrews.ac.uk**20090107121328] 

[Added decide tactic
eb@cs.st-andrews.ac.uk**20081220221809] 

[Add 'collapsible' flag
eb@cs.st-andrews.ac.uk**20081219180742] 

[Add TODO
eb@cs.st-andrews.ac.uk**20081219180726] 

[Some compiler fiddling
eb@cs.st-andrews.ac.uk**20081219155920] 

[Keep track of names which are still to be proved
eb@cs.st-andrews.ac.uk**20081219143302] 

[File operations
eb@cs.st-andrews.ac.uk**20081218233527] 

[Can allow the system to make up names for metavariables
eb@cs.st-andrews.ac.uk**20081218233428] 

[Deal with c includes and external libraries
eb@cs.st-andrews.ac.uk**20081126150921] 

[Fix foreign functions for IO
eb@cs.st-andrews.ac.uk**20081102153832] 

[Added Ptr primitive
eb@cs.st-andrews.ac.uk**20081102134232] 

[Add unsafePerformIO
eb@cs.st-andrews.ac.uk**20081019171546
 Mostly meant for pure foreign functions, but of course you're free to abuse
 it as you like...
] 

[Add flags on functions to denote special behaviour
eb@cs.st-andrews.ac.uk**20081019160020
 Specifically, so far:
 * %nocg  Never generate code when compling
 * %eval  Evaluate completely before compiling
 
 This allows some 'meta-programs' to be written, which are fully evaluated
 before compiling. We use this for defining foreign functions easily.
] 

[Record paper changes!
eb@cs.st-andrews.ac.uk**20080916170851] 

[Added 'use' tactic
eb@cs.st-andrews.ac.uk**20080916170742
 Like 'believe' but instead of just believing the value, adds subgoals for
 each required equality proof.
] 

[More of paper
eb@cs.st-andrews.ac.uk**20080901161738] 

[Added paper macros
eb@cs.st-andrews.ac.uk**20080901094433] 

[Starting on paper
eb@cs.st-andrews.ac.uk**20080829091345] 

[Compiling 'Foreign' constructor (but only when inline)
eb@cs.st-andrews.ac.uk**20080826123458] 

[Generate Idris functions from foreign function descriptions
eb@cs.st-andrews.ac.uk**20080825164523] 

[Some work towards constructor optimisations
eb@cs.st-andrews.ac.uk**20080825094709] 

[Basic foreign function framework
eb@cs.st-andrews.ac.uk**20080825094631] 

[Added test transformation on Vects
eb@cs.st-andrews.ac.uk**20080731155217] 

[Transformation application
eb@cs.st-andrews.ac.uk**20080730125618] 

['noElim' flag to allow big data types not to need elimination rules
eb@cs.st-andrews.ac.uk**20080729125140] 

[Added __toInt and __toString
eb@cs.st-andrews.ac.uk**20080710151313
 Hacky for now, until we work out a nice way of doing coercions between
 primitives. But it makes some programs, like those which ask for an int
 as input, possible.
] 

[If an operator returns a boolean, the compiler had better make code to build a boolean!
eb@cs.st-andrews.ac.uk**20080710145313] 

[Deal with weird names that Ivor generates in the compiler
eb@cs.st-andrews.ac.uk**20080709112032] 

[Some Nat theorems
eb@cs.st-andrews.ac.uk**20080709014158] 

[Generalise tactic
eb@cs.st-andrews.ac.uk**20080709014121] 

[Need to give all the definitions to addIvor
eb@cs.st-andrews.ac.uk**20080708203624] 

[Don't crash when there's an error in input!
eb@cs.st-andrews.ac.uk**20080708182610] 

[Only allow 'believe' to rewrite values
eb@cs.st-andrews.ac.uk**20080708165140
 This way at least the types have to be right before '?=' defined
 programs will run.
] 

[Added 'believe' tactic
eb@cs.st-andrews.ac.uk**20080708160736
 For allowing the testing of programs before a complete proof term
 exists. Obviously programs built this way are not trustworthy! They make
 use of a "Suspend_Disbelief" function which just invents a rewrite rule
 that works, but which doesn't have a proof.
] 

[Added '?=' syntax
eb@cs.st-andrews.ac.uk**20080708140505
 If you have a pattern clause, and don't know the definite type of the
 right hand side, use;
 foo patterns ?= def; [theoremName]
 
 This will add a theorem called theoremName which fixes up the type,
 and you can prove it later, via :p or with the 'proof' syntax. Useful
 if you want to hide details of the proof of a necessary rewriting.
] 

[Catch errors in proofs, and allow abandoning
eb@cs.st-andrews.ac.uk**20080708123202] 

[Identify parameters of data types to make elimination rule properly
eb@cs.st-andrews.ac.uk**20080708105930] 

[Reading of proof scripts
eb@cs.st-andrews.ac.uk**20080707010718] 

[Add Undo, require % before tactics, and output script when done
eb@cs.st-andrews.ac.uk**20080707004642] 

[Rudimentary theorem prover now working
eb@cs.st-andrews.ac.uk**20080706235523] 

[Parsing tactics and proofs
eb@cs.st-andrews.ac.uk**20080706222536] 

[Adding some tactics
eb@cs.st-andrews.ac.uk**20080706211202] 

[Added :e command and call to epic
eb@cs.st-andrews.ac.uk**20080702115125] 

[forking needs the argument to be lazily evaluated
eb@cs.st-andrews.ac.uk**20080630141845] 

[Added threading to compiler
eb@cs.st-andrews.ac.uk**20080630130045] 

[Compiling IORefs
eb@cs.st-andrews.ac.uk**20080630123521] 

[Add Prelude.e, and prepend it to epic output
eb@cs.st-andrews.ac.uk**20080630113450] 

[Added Prover.lhs (not that it does much yet)
eb@cs.st-andrews.ac.uk**20080623231341] 

[Fix constructor expansion
eb@cs.st-andrews.ac.uk**20080623111226] 

[Got the basic compilation working
eb@cs.st-andrews.ac.uk**20080622233141] 

[Added proof token to Lexer
eb@cs.st-andrews.ac.uk**20080516140747
 (not doing anything yet, it needs a separate parser)
 Also fix minor lexing error, and added ':i' command to drop into Ivor
 for debugging purposes.
] 

[Added 'normalise' command
eb@cs.st-andrews.ac.uk**20080523140332
 Useful if you want to normalise an IO computation without running it.
] 

[Small implicit argument change
eb@cs.st-andrews.ac.uk**20080513231721
 {a,b,c} now allowed (i.e no need for type label as in {a,b,c:_}
 Also, implicit arguments can now, syntactically, only appear at the
 left of types of top level declarations (since that is the only place they
 make sense with our simple way of handling such arguments).
] 

['!' to stop implicit arguments being added to a name
eb@cs.st-andrews.ac.uk**20080513215523] 

[Outputting Epic code
eb@cs.st-andrews.ac.uk**20080511173955
 Still some things to sort out before this runs though
] 

[Removing IO boiler plate for compilation
eb@cs.st-andrews.ac.uk**20080510170038] 

[Lambda lifter
eb@cs.st-andrews.ac.uk**20080509161049] 

[Oops, broke the build *again*
eb@cs.st-andrews.ac.uk**20080508220834] 

[Data type for result of lambda lifting
eb@cs.st-andrews.ac.uk**20080508214635] 

[Compiler part 1 (pattern matching)
eb@cs.st-andrews.ac.uk**20080508200113] 

[partition
eb@cs.st-andrews.ac.uk**20080508132348] 

[Let's try not to apply patches which break the build...
eb@cs.st-andrews.ac.uk**20080508111341] 

[Patterns representation
eb@cs.st-andrews.ac.uk**20080508110025] 

[Added append to library
eb@cs.st-andrews.ac.uk**20080429111614] 

[Begin planning compiler
eb@cs.st-andrews.ac.uk**20080414123534] 

[brief note
eb@cs.st-andrews.ac.uk**20080414103207] 

[Minor LaTeX improvement
eb@cs.st-andrews.ac.uk**20080330151806
 Output placeholders correctly. Can you tell I'm writing a paper ;).
] 

[Even more LaTeX fixes
eb@cs.st-andrews.ac.uk**20080327115445] 

[Fix some LaTeXing
eb@cs.st-andrews.ac.uk**20080327113804] 

[Some latex tidying
eb@cs.st-andrews.ac.uk**20080325114709] 

[Latex of do notating
eb@cs.st-andrews.ac.uk**20080325110051] 

[Add %latex directive to parser
eb@cs.st-andrews.ac.uk**20080325105552] 

[Allow giving latex commands for particular names in :l
eb@cs.st-andrews.ac.uk**20080325103351] 

[Basic LaTeX generation working
eb@cs.st-andrews.ac.uk**20080324185632] 

[Started LaTeX generation
eb@cs.st-andrews.ac.uk**20080324170817] 

[Implement :t in REPL
eb@cs.st-andrews.ac.uk**20080324143135] 

[Use readline for REPL, add :commands
eb@cs.st-andrews.ac.uk**20080324141759] 

[Oops, didn't mean to record the trace
eb@cs.st-andrews.ac.uk**20080322115632] 

[Allow types on bindings in do notation
eb@cs.st-andrews.ac.uk**20080322114909] 

[Fix bug: add placeholders inside infix ops
eb@cs.st-andrews.ac.uk**20080320150127] 

[Pretty print refl
eb@cs.st-andrews.ac.uk**20080320134148] 

[Bind multiple names in one go in type declarations
eb@cs.st-andrews.ac.uk**20080320132941] 

[Locks are semaphores
eb@cs.st-andrews.ac.uk**20080319161532
 So allow them to be initialised with the number of processes allowed to
 hold onto then,
] 

[Missed a case in constant show
eb@cs.st-andrews.ac.uk**20080318175442] 

[Add Maybe and Either to prelude
eb@cs.st-andrews.ac.uk**20080318224740] 

[Use 'fastCheck' since we already know our IO programs work
eb@cs.st-andrews.ac.uk**20080318161100] 

[Pretty printing and parsing tweaks
eb@cs.st-andrews.ac.uk**20080318161027] 

[No point in generating elimination rules since we don't use them
eb@cs.st-andrews.ac.uk**20080317162738
 Perhaps later, if linking to a theorem prover, it will be useful, but
 it can be done on demand.
] 

[Dump environment for metavars in the right order
eb@cs.st-andrews.ac.uk**20080315230225] 

[Nicer display of metavariables
eb@cs.st-andrews.ac.uk**20080314174637] 

[Added a pretty ugly pretty-printer for terms
eb@cs.st-andrews.ac.uk**20080314154034] 

[Added metavariable syntax
eb@cs.st-andrews.ac.uk**20080314132802] 

[Back in sync with Ivor (addPatternDef type changed)
eb@cs.st-andrews.ac.uk**20080314011920] 

[Add modules to .cabal for executable
eb@cs.st-andrews.ac.uk**20080313134204] 

[imports in RunIO
eb@cs.st-andrews.ac.uk**20080312174755] 

[minor cabal format
gwern0@gmail.com**20080312041116] 

[improve cabal metadata for hackage, split into lib/main
gwern0@gmail.com**20080312041034] 

[fix sdist
gwern0@gmail.com**20080312040218] 

[+Extensions
gwern0@gmail.com**20080312035953] 

[Context.lhs -> Context.hs
gwern0@gmail.com**20080312035926
 Literate files are just wasteful if they aren't literate
] 

[dehaskell98
gwern0@gmail.com**20080312035905] 

[Update ioref example
eb@cs.st-andrews.ac.uk**20080312125024] 

[Added IORefs
eb@cs.st-andrews.ac.uk**20080312123834] 

[Added some concurrency primitives
eb@cs.st-andrews.ac.uk**20080311205546
 fork, newLock, lock, unlock
] 

[Add simple stateful DSL
eb@cs.st-andrews.ac.uk**20080311151020] 

[Add placeholders in do expressions too!
eb@cs.st-andrews.ac.uk**20080311150824] 

[Be more implicit!
eb@cs.st-andrews.ac.uk**20080310135937] 

[Better if testVect has ints
eb@cs.st-andrews.ac.uk**20080310133325] 

[syntax tinker in partition.idr
eb@cs.st-andrews.ac.uk**20080310132921] 

[Syntax for let bindings
eb@cs.st-andrews.ac.uk**20080310025357] 

[if...then...else syntax
eb@cs.st-andrews.ac.uk**20080310024516] 

[Member predicate
eb@cs.st-andrews.ac.uk**20080310013200] 

[Syntax for _ patterns
eb@cs.st-andrews.ac.uk**20080310012608] 

[Rename List
eb@cs.st-andrews.ac.uk**20080310002023] 

[builtins needs bool
eb@cs.st-andrews.ac.uk**20080310001809] 

[Removed samples which should be in lib
eb@cs.st-andrews.ac.uk**20080309224149] 

[Added io example
eb@cs.st-andrews.ac.uk**20080309223957] 

[More keeping in sync with Ivor
eb@cs.st-andrews.ac.uk**20080309222931] 

[Take advantage of better ivor inference
eb@cs.st-andrews.ac.uk**20080309213603] 

[Added vect lib
eb@cs.st-andrews.ac.uk**20080308185405] 

[Added List to library
eb@cs.st-andrews.ac.uk**20080308185119] 

[Lambdas can take multiple arguments
eb@cs.st-andrews.ac.uk**20080308185050] 

[Added integer comparison operators
eb@cs.st-andrews.ac.uk**20080308134245] 

[Add polymorphic boolean equality
eb@cs.st-andrews.ac.uk**20080308133304] 

[Added library paths and a simple prelude
eb@cs.st-andrews.ac.uk**20080308132011] 

[Some primitive operators, and '=' for JM equality
eb@cs.st-andrews.ac.uk**20080307234257] 

[Use WHNF for evaluation now Ivor has it
eb@cs.st-andrews.ac.uk**20080307195902] 

[Added builtins
eb@cs.st-andrews.ac.uk**20080307173517] 

[add RunIO.hs
eb@cs.st-andrews.ac.uk**20080306114827] 

[Added more samples (IO not quite working yet due to Ivor bug though)
eb@cs.st-andrews.ac.uk**20080305170333] 

[Add do notation
eb@cs.st-andrews.ac.uk**20080305170312] 

['include' files
eb@cs.st-andrews.ac.uk**20080305112534] 

[Latest Ivor allows more implicitness
eb@cs.st-andrews.ac.uk**20080305104707] 

[Enough annotations to make interp work
eb@cs.st-andrews.ac.uk**20080305001951] 

[Allow forward declarations for functions, add quicksort example
eb@cs.st-andrews.ac.uk**20080305000656] 

[Added 'partition' example
eb@cs.st-andrews.ac.uk**20080304224512] 

[Easier to put implicit arguments in pattern clauses
eb@cs.st-andrews.ac.uk**20080304224425] 

[John Major equality syntax
eb@cs.st-andrews.ac.uk**20080304215146] 

[Added interpreter example, fixed simple sample
eb@cs.st-andrews.ac.uk**20080303164114] 

[Changed some syntax
eb@cs.st-andrews.ac.uk**20080303163946
 - Implicit arguments can now be named when applied, so that the parser
 knows which argument you mean
 - No need for {} around definitions
 - Type of types is #
 
] 

[make sure constructur arguments get new names generated
eb@cs.st-andrews.ac.uk**20080229003215] 

[Added samples directory
eb@cs.st-andrews.ac.uk**20080228232920] 

[First version which runs code!
eb@cs.st-andrews.ac.uk**20080228232820] 

[Some simple examples
eb@cs.st-andrews.ac.uk**20080228175453] 

[Now building terms and datatypes for Ivor with implicit args added
eb@cs.st-andrews.ac.uk**20080228161136] 

[More work on parser; constants, lambdas, new syntax tree
eb@cs.st-andrews.ac.uk**20080226111951] 

[Parser for datatypes and basic function definitions
eb@cs.st-andrews.ac.uk**20080108171829] 

[Started parser
eb@cs.st-andrews.ac.uk**20071214181416] 

[First chunk of code
eb@cs.st-andrews.ac.uk**20071212114523]