This repository has been archived by the owner on Feb 8, 2024. It is now read-only.
Update dependency idris-lang/Idris-dev to v1 #20
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.4.2
->1.3.4
Release Notes
idris-lang/Idris-dev
v1.3.4
Compare Source
v1.3.3
Compare Source
v1.3.2
Compare Source
Library updates
openFile
opens the file in binary mode on Windows.clockTime
andfRemove
Tool updates
interfaces (i.e. types for names declared
export
and definitions of namesdeclared
public export
) are unchanged.:doc
now details the accessbility of items as well as their totality.Miscellaneous updates
--optimise-nat-like-types
enables compilationof
Nat
-like type families to big integers. A type familyis
Nat
-like if, after erasure, it has two constructors,one nullary, the other one with exactly one recursive field.
v1.3.1
Compare Source
Tool updates
v1.3.0
Compare Source
Language updates
Please, rely on the ones provided by Pruviloj and elaborator reflection instead.
Library updates
and even.
contrib
:Data.SortedBag
: Bag (or Multiset) implemention based onData.SortedMap
.Data.PosNat
: ANat
paired with a proof that it is positive.Data.Chain
: A function with an arbitrary number of arguments, pluscombinators for working with them.
Tool updates
--allow-capitalized-pattern-variables
to optionally allow capitalized pattern variables after they were prohibited in 1.2.0.:exec
terminatesabnormally.
v1.2.0
Compare Source
Language updates
@
-patterns such asx@p
,x
is now in scope on the right-hand sideof any definitions in
where
clauses, provided the left-hand side of thedefinition does not shadow it.
LinearTypes
language extension has been revised. It implements therules from Bob Atkey's draft "The Syntax and Semantics of Quantitative
Type Theory" and now works with holes and case expressions.
(`LTE` 42)
or(1 `plus`)
.other operators, e.g.
infixr 8 `cons`
. Backticked operators withundeclared fixity are treated as non-associative with precedence lower
than all declared operators.
using implementation uninhabltb
to add theimplementation to the automated resolution, but if it fails to find the
instance due to non-injectivity, one must pass it explicitly to target
function, i.e.
absurd @​{uninhabltb}
.until the final three are considered part of the string. Now a string such as
""""hello""""
will parse, and is equivalent to"\"hello\""
.%assert_total
,abstract
, and[static]
havebeen removed as well as the use of "public" instead of "public export" to
expose a symbol.
let
statements indo
blocks in addition tolet
expressions and<-
statements, e.g.with
-application (using|
) cannot be used in thatposition anymore.
Library Updates
oldeffects
library fromlibs
folder, useeffects
orControl.ST
instead.Text.Literate
, a module for working with literate source files.Data.IORef
, for working with mutable references inIO
andJS_IO
.discriminate
andconstruct
tactics to Pruviloj.IsSucc
type toPrelude
, which proves that aNat
is a successor.Data.IOArray
, containing primitives for mutable arrays.Language.JSON
, for total serialization/deserialization of JSON data.&&
and||
to be right-associative. Increased precedence of&&
to be higher than that of
||
.==
,/=
,<
,<=
,>
, and>=
. Increased precedence of/=
and==
to match the others.<|>
,<$>
, and.
right-associative.<|>
and<*>
(and its related operators,<*
and*>
). Now<|>
has a lower precedence.>>=
to be below that of<|>
.Data.String.Extra
.Control.Delayed
, a module for conditionally making a typeInf
orLazy
.Data.Fuel
, which implements theFuel
data type and the partialforever
function.Data.Bool.Extra
, a module with properties of boolean operations.Text.Lexer
toText.Lexer.Core
. Added several new combinatorsand lexers to
Text.Lexer
.Text.Parser
toText.Parser.Core
. Added several new combinatorsto
Text.Parser
. Made the following changes.parse
.optional
tooption
and flip argument order.maybe
tooptional
.commit
flag where possible.Prelude.Doubles.atan2
is now implemented as a primitive instead ofbeing coded in Idris.
Test.Unit
tocontrib
for simple unit testing.abs
from theNeg
interface into its ownAbs
interface.Nat
implements
Abs
withabs = id
.Control.ST.File
, an ST based implementation of the same behaviourimplemented by
Effect.File
in the effects package.Tool Updates
that are explicitly loaded.
as they were given in the source files.
in LaTeX.
much highlighting information is available depends on where the error
occurred.
could possibly cause some subtle deviations in parsing from previous
versions of Idris.
on different lines), instead of just a single point. The format is
Foo.idr:9:7-15:
if ending column is on the same line orFoo.idr:9:7-10:15:
if the ending column is on a different line.Foo.idr:9:7-15:
includes column 15. Previously the error would have readFoo.idr:9:7-16:
.Packaging Updates
-_
characters.Package names are also case insensitive.
IDRIS_INCLUDES
andIDRIS_LDFLAGS
are now set with the correct Cflags.
v1.1.1
Compare Source
v1.1.0
Compare Source
Library Updates
Added
Text.PrettyPrint.WL
an implementation of the Wadler-LeijenPretty-Print algorithm. Useful for those wishing to pretty print
things.
Added
Text.Lexer
andText.Parser
tocontrib
. These are small librariesfor implementing total lexical analysers and parsers.
New instances:
Catchable
forReaderT
,WriterT
, andRWST
.MonadTrans
forRWST
.Added utility functions to
Data.SortedMap
andData.SortedSet
(contrib
),most notably
merge
, merging two maps by theirSemigroup
op (<+>
)Prelude.WellFounded
now contains an interfaceSized a
that defines a sizemapping from
a
toNat
. For example, there is an implementation for lists,where
size = length
.The function
sizeAccessible
then proves well-foundedness of the relationSmaller x y = LT (size x) (size y)
, which allows us to use stronginduction conveniently with any type that implements
Sized
.In practice, this allows us to write functions that recurse not only on
direct subterms of their arguments but on any value
with a (strictly) smaller
size
.A good example of this idiom at work is
Data.List.Views.splitRec
frombase
.Added utility lemma
decEqSelfIsYes : decEq x x = Yes Refl
toDecidable.Equality
. This is primarily useful for proving properties offunctions defined with the help of
decEq
.Tool Updates
New JavaScript code generator that uses an higher level intermediate
representation.
Various optimizations of the new JavaScript code generator.
Names are now annotated with their representations over the IDE
protocol, which allows IDEs to provide commands that work on special
names that don't have syntax, such as case block names.
v1.0.1
Compare Source
v0.99.2
Compare Source
Library Updates
Data.Buffer
tobase
. This allows basic manipulation of mutablebuffers of
Bits8
, including reading from and writing to files.Tool Updates
against those installed. If there is a mismatch Idris will complain.
Miscellaneous Updates
Control.ST
libraryv0.99.1
Compare Source
Language updates
Language pragmas now required for the less stable existing features, in
addition to the existing
TypeProviders
andErrorReflection
:ElabReflection
, which must be enabled to use%runElab
UniquenessTypes
, which must be enabled to useUniqueType
DSLNotation
, which must be enabled to define adsl
blockFirstClassReflection
, which must be enabled to define a%reflection
function
New language extension
LinearTypes
:is allowed to be used; either 0 or 1 (if unstated, multiplicity is "many")
are still lots of details to sort out. Some features don't quite work
properly yet. But it is there to play with for the brave!
Tool Updates
Idris' output has been updated to more accurately reflect its
progress through the compiler i.e. Type Checking; Totality Checking;
IBC Generation; Compiling; and Code Generation. To control the
loudness of the reporting three verbosity levels are introduced:
--V0
,--V1
, and--V2
. The old aliases of-V
and--verbose
persist.
New REPL command
:!
that runs an external shell command.The REPL now colourises output on MinTTY consoles (e.g., Cygwin and MSYS)
on Windows, which previously did not occur due to a bug.
Idris now runs in a UTF-8-compatible codepage on Windows. This fixes many
Unicode-rendering issues on Windows (e.g., error messages stating
commitBuffer: invalid argument (invalid character)
).Idris now has a
--warnipkg
flag to enable auditing of Idrispackages during build time. Currently auditing check's the list of
modules specified in the
iPKG
file with those presented in thepackage directory.
Library Updates
functions (
exitWith
,exitFailure
, andexitSuccess
) and a datastructure (
ExitCode
) to capture a program's return code.String
to anInt
,Integer
or aDouble
now ignores leadingand trailing whitespace. Previously only leading whitespace was ignored.
openFile
,do_popen
, andARGV
are now properly encoded using UTF-8 on Windows.v0.12.3
Compare Source
v0.12.2
Compare Source
v0.12.1
Compare Source
v0.11.2
Compare Source
v0.11.1
Compare Source
v0.10.3
Compare Source
v0.10.2
Compare Source
v0.10.1
Compare Source
v0.9.20
Compare Source
Language updates
`{{n}}
quotes n without resolving it, allowing short syntax fordefining new names.
`{n}
still quotes n to an existing name in scope.prim__strSubstr
for more efficient extraction ofsubstrings. External code generators should implement this.
now deprecated in favour of reflected elaboration. They will be removed at
some point in the future.
unbound implicit is now always an unbound implicit. This is much more
resilient to changes in inputs, but does require that function names be
explicitly qualified when in argument position.
in types: names which begin with lower case letters, not applied to any
arguments, are treated as bound pattern variables.
%deprecate
directive, which gives a warning and a message when adeprecated name is referenced.
Library updates
Neg
class now represents numeric types which can be negative. As such,the
(-)
operator andabs
have been moved there fromNum
.(-)
onNat
requires that the second argument issmaller than or equal to the first.
minus
retains the old behaviour,returning
Z
if there is an underflow.(+)
,(-)
, and(*)
operations on Fin have been removed.programmes.
to import
Language.Reflection.Elab
.PERF
effect allows for simple performance metrics to be collected fromEffectful programs.
TT
and
Raw
reflection datatypes in Language.Reflection.IO
operations (for example openFile/fread/fwrite) now returnEither FileError ty
where the return type was previouslyty
to indicatethat they may fail.
Tool updates
:doc
, rather than as the underlyingdatatype
pkgs
which takes a comma-separated list ofpackage names that the idris project depends on. This reduces bloat in the
opts
option with multiple package declarations.executable = "your filename here"
in addition to theExisting
Executable = yourFilenameHere
style. While the unquoted version islimited to filenames that look like namespaced Idris identifiers
(
your.filename.here
), the quoted version accepts any valid filename.\d
in Vim,Ctrl-Alt-A
in Atom,C-c C-s
in Emacs)now adds missing clauses if there is already a definition.
Miscellaneous updates
the
--no-elim-deprecation-warnings
and--no-tactic-deprecation-warnings
flags.
v0.9.19
Compare Source
on the GitHub wiki.
Show
class has been moved intoPrelude.Show
and augmented with themethod
showPrec
, which allows correct parenthesization of showed terms. Thiscomes with the type
Prec
of precedences and a few helper functions.:printerdepth
that sets the pretty-printer to only descendto some particular depth when printing. The default is set to a high number to
make it less dangerous to experiment with infinite structures. Infinite depth
can be set by calling :printerdepth with no argument.
>>=
in do-notationfromInteger i
wherei
is an integer constant is now shown just asi
incompiler output
actions. Access it with
:elab
from the REPL.--highlight
that causes Idris to save highlightinginformation when successfully type checking. The information is in the same
format sent by the IDE mode, and is saved in a file with the extension ".idh".
highlight keywords like
case
,of
,let
, anddo
.List
functions
types, provided that the case analysis does not affect the form of any
variable used in the right hand side of the case.
definitions and proof search.
System.Interactive
, along withgetArgs
to the Prelude.them in a declaration context and many bug fixes.
decl syntax
rules to allow syntax extensions at the declaration levelv0.9.18
Compare Source
GHC 7.10 compatibility
Add support for bundled toolchains.
Strings are now UTF8 encoded in the default back end
Idris source files are now assumed to be in UTF8, regardless of locale
settings.
Some reorganisation of primitives:
Buffer
andBitVector
primitives have been removed (they were not testedsufficiently, and lack a maintainer)
Float
has been renamedDouble
(Float
is defined in the Prelude forcompatibility)
%extern
directive, allowing back ends to define their own special purpose primitives
Ptr
andManagedPtr
have been removed and replaced with external primitivesAdd
%hint
function annotation, which allows functions to be used as hints inproof search for
auto
arguments. Only functions which return an instance ofa data or record type are allowed as hints.
Syntax rules no longer perform variable capture. Users of effects will need to
explicitly name results in dependent effect signatures instead of using the
default name
result
.Pattern-matching lambdas are allowed to be impossible. For example,
Dec (2 = 3)
can now be constructed withNo $ \(Refl)
impossible, instead ofrequiring a separate lemma.
Case alternatives are allowed to be impossible:
The default
Semigroup
andMonoid
instances for Maybe are now prioritisedchoice, keeping the first success as Alternative does. The version that
collects successes is now a named instance.
:exec
REPL command now takes an optional expression to compile and run/showThe return types of
Vect.findIndex
,Vect.elemIndex
andVect.elemIndexBy
were changed from
Maybe Nat
toMaybe (Fin n)
A new
:browse
command shows the contents of a namespace`{n}
is syntax for a quotation of the reflected representationof the name
n
. Ifn
is lexically bound, then the resultingquotation will be for it, whereas if it is not, then it will succeed
with a quotation of the unique global name that matches.
New syntax for records that closely matches our other record-like structures:
type classes. See the updated tutorial for details.
Records can be coinductive. Define coinductive records with the
corecord
keyword.
Type class constructors can be assigned user-accessible names. This is done
using the same syntax as record constructors.
if ... then ... else ...
is now built-in syntax instead of being defined ina library. It is shown in REPL output and error messages, rather than its
desugaring.
The desugaring of
if ... then ... else ...
has been renamed toifThenElse
from
boolElim
. This is for consistency with GHC Haskell andscala-virtualized, and to reflect that if-notation makes sense with non-Bool
datatypes.
Agda-style semantic highlighting is supported over the IDE protocol.
Experimental support for elaborator reflection. Users can now script the
elaborator, for use in code generation and proof automation. This feature is
still under rapid development and is subject to change without notice. See
Language.Reflection.Elab and the %runElab constructs
v0.9.17
Compare Source
--ideslave
command line option has been replaced with a--ide-mode
command line option with the same semantics.
claim N TY
that introduces a new hole namedN
with typeTY
unfocus
that moves the current hole to the bottom of thehole stack
Language.Reflection.Raw
terms inaddition to
Language.Reflection.TT
. Types are used for disambiguation,defaulting to
TT
at the REPL.Language.Reflection.Quotable
now takes an extra type parameter whichdetermines the type to be quoted to. Instances are provided to quote common
types to both
TT
andRaw
.particular,
Applicative.(<$>)
is nowApplicative.(<*>)
and(<$>)
is nowan alias for Functor.map. Correspondingly, (
(<*)
and(*>)
. The cascading effects of this rename are thatAlgebra.(<*>)
has been renamed toAlgebra.(<.>)
andMatrix.(<.>)
is nowMatrix.(<:>)
.representation of the name that the user chose. Specifically, the rewritten
lambda
,pi
, andlet
binders will now get an extra argument of typeTTName
. This allows more understandable dynamic errors in DSL code and morereadable code generation results.
$
FFI_Export
type which allows Idris functions to be exportoed andcalled from foreign code
of a type
:core TM
that shows the elaborated form ofTM
along withits elaborated type using the syntax of
TT
. IDE mode has a correspondingcommand
:elaborate-term
for serialized terms.aligned, semantically.
print
is now for putting showable things to STDOUT.printLn
is for putting showable things to STDOUT with a new lineputCharLn
for putting a single character to STDOUT, with a new line.be available before resolving instances. Only determining parameters are
checked when checking for overlapping instances.
contrib
containing things that are less mature or less used thanthe contents of
base
.contrib
is not available by default, so you may needto add
-p contrib
to your .ipkg file or Idris command line.assumes this, so we need to check when instances are defined.
v0.9.16
Compare Source
types where one is indexed by the other.)
top level.
public
modifier has been added to import statements, which will reexport thenames exported from that module.
@
-patterns. A pattern of the formx@p
on the left hand sidematches
p
, withx
in scope on the right hand side with valuep
.source code span, if this information is available. If not, it raises an
error.
:search
and:apropos
commands can now be given optional package lists tosearch.
Vect
,Fin
andSo
moved out of prelude intobase
, in modulesData.Vect
,Data.Fin
andData.So
respectively.coverage checking.
v0.9.15
Compare Source
skip
andfail
. Skip does nothing, and fail takes a stringas an argument and produces it as an error.
Skip
andFail
. ReflectedFail
takes alist of
ErrorReportParts
as an argument, like error handlers produce,allowing access to the pretty-printer.
prover.
List
library functions are now implicit andsolved automatically.
large expressions.
negate
, which is a method of theNeg
typeclass. This allows instances of
Num
that can't be negative, likeNat
, andit makes correct IEEE Float operations easier to encode. Additionally, unary
negation is now available to DSL authors.
maintenance. Now, the compiler distribution only ships with the C and
JavaScript backends.
:printdef
displays the internal definition of a name:pprint
pretty-prints a definition or term with LaTeX orHTML highlighting
library (see #1516)
code blocks
inside of documentation strings are now parsed and typechecked. If this succeeds, they are rendered in full color in documentation
lookups, and with semantic highlighting for IDEs.
as code examples.
now provide error messages to IDE clients.
Engine style)
v0.9.14
Compare Source
Tactic for case analysis in proofs
Induction and case tactic now work on expressions
Support for running tests for a package with the tests section of .ipkg files
and the
--testpkg
command-line optionClearly distinguish between type providers and postulate providers at the use
site
Allow dependent function syntax to be overridden in dsl blocks, similarly to
functions and let. The keyword for this is
pi
.Updated
effects
library, with simplified APIAll new JavaScript backend (avoids callstack overflows)
Add support for
%lib
directive for NodeJSQuasiquotes and quasiquote patterns allow easier work with reflected
terms.
`(EXPR)
quasiquotes EXPR, causing the elaborator to beused to produce a reflected version of it. Subterms prefixed with
~
are unquoted - on the RHS, they are reflected terms to splice in,
while on the LHS they are patterns.
A quasiquote expression can be given a goal type for the elaborator,
which helps with disambiguation. For instance,
`(() : ())
quotes the unit constructor, while
`(() : Type)
quotes the unittype. Both goal types and quasiquote are typechecked in the global
environment.
Better inference of unbound implicits
v0.9.13
Compare Source
IDE support for retrieving structured information about metavariables
Experimental Bits support for JavaScript
IdrisDoc: a Haddock- and JavaDoc-like HTML documentation generator
Command line option
-e
(or--eval
) to evaluate expressions without loadingthe REPL. This is useful for writing more portable tests.
Many more of the basic functions and datatypes are documented.
Primitive types such as Int and String are documented
Removed javascript lib in favor of idris-hackers/iQuery
Specify codegen for :compile REPL command (e.g.
:compile
javascriptprogram.js)
Remove
:info
REPL command, subsume and enhance its functionality in the:doc
commandNew (first class) nested record update/access syntax:
The banner at startup can be suppressed by adding
:set
nobanner to the initialisation script.:apropos
now accepts space-delimited lists of query items, and searches forthe conjunction of its inputs. It also accepts binder syntax as search
strings - for instance,
->
finds functions.Totality errors are now treated as warnings until code generation time, when
they become errors again. This allows users to use the interactive editing
features to fix totality issues, but no programs that violate the stated
assumptions will actually run.
Added
:makelemma
command, which adds a new top level definition to solve ametavariable.
Extend
:addclause
to add instance bodies as well as definitionsReverse parameters to
BoundedList
-- now matchesVect
, and is easier toinstantiate classes.
Move
foldl
into Foldable so it can be overridden.Experimental
:search
REPL command for finding functions by typeInternal changes
v0.9.12
Compare Source
Proof search now works for metavariables in types, giving some interactive
type inference.
New
Lazy
type, replacing laziness annotations.JavaScript and Node codegen now understand the
%include
directive.Concept of
null
is now understood in the JavaScript and Node codegen.Lots of performance patches for generated JavaScript.
New commands
:eval
(:e
) and:type
(:t
) in the prover, which eithernormalise or show the type of expressions.
Allow type providers to return postulates in addition to terms.
Syntax for dealing with match failure in
<-
and pattern matching let.New syntax for inline documentation. Documentation starts with
|||
, andarguments are documented by preceding their name with
@
. Example:Allow the auto-solve behaviour in the prover to be disabled, for easier
debugging of proof automation. Use
:set autosolve
and:unset autosolve
.Updated
effects
libraryNew
:apropos
command at REPL to search documentation, names, and typesUnification errors are now slightly more informative
Support mixed induction/coinduction with
Inf
typeAdd
covering
function option, which checks whether a function and alldescendants cover all possible inputs
v0.9.11
Compare Source
field/effect disambiguation. "name" can be any valid identifier. Two labels
are definitionally equal if they have the same name.
which allows a hint as to how to display a term in error messages
--ideslave
mode now transmits semantic information about many of the stringsthat it emits, which can be used by clients to implement semantic highlighting
like that of the REPL. This has been implemented in the Emacs mode and the IRC
bot, which can serve as examples.
with NAME EXPR
privileges the namespaceNAME
whendisambiguating overloaded names. For example, it is possible to write
with Vect [1,2,3]
at the REPL instead ofthe (Vect _ _) [1,2,3]
, because theVect
constructors are defined in a namespace calledVect
.assert_smaller
internal function, which marks an expression as smaller thana pattern for use in totality checking. e.g.
assert_smaller (x :: xs) (f xs)
asserts thatf xs
will always be structurally smaller than(x :: xs)
assert_total
internal function, which marks a subexpression as assumed to betotal, e.g
assert_total (tail (x :: xs))
.support. If curses is not available, automatic mode assumes 80 columns.
Prelude.Either.either
.neweffects'
library, intended to replaceeffects
in the nextrelease.
Internal changes
Configuration
📅 Schedule: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate. View repository job log here.