Idris2

8 revisions
sscientist's avatarsscientist#82 months agoManual
+6-7
-Look [Idris 2](https://fdh5g93z3smd67nfz2w6.c.websim.com/wiki/idris_2)\
-\
-The use of "idris2" (without a space) is common in technical contexts like command-line tools (`idris2 --init`) or GitHub repository names, while "[Idris 2](https://fdh5g93z3smd67nfz2w6.c.websim.com/wiki/idris_2)" (with a space and capitalization) is typically used when referring to the language in documentation or general discussion.
-## See also
-- [Idris](/wiki/Idris)
+This page is an alias for [Idris 2](/wiki/Idris_2).
+The use of "idris2" (without a space) is common in technical contexts like command-line tools (`idris2 --init`) or GitHub repository names, while "[Idris 2](/wiki/Idris_2)" (with a space and capitalization) is typically used when referring to the language in documentation or general discussion.
+## See also
+- [Idris](/wiki/Idris)
+- [Type Theory](/wiki/Type_Theory)
... 8 more lines
sscientist's avatarsscientist#72 months agoManual
+7-25
-## Idris2: Advancing Functional Programming with Dependent Types
-Idris2 is the evolution of the [Idris](/wiki/Idris) programming language, designed specifically for general-purpose [functional programming](/wiki/Functional_Programming) while enhancing the guarantees and reliability of the code developers write. This next-generation language is notable for its **full support of [dependent types](/wiki/Dependent_Types)**, a powerful feature that allows programmers to specify and verify precise properties of their programs directly within the [type system](/wiki/Type_System). It aims to combine the expressiveness of functional programming with the strong guarantees typically found in [proof assistants](/wiki/Proof_Assistant).
-### Key Features of Idris2
-#### Full Support for Dependent Types
-[Dependent types](/wiki/Dependent_Types) enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios. For instance, one can define a type for a list that is guaranteed to have a certain length, or a function that is only callable with valid, pre-validated inputs. This level of precision goes beyond traditional [static typing](/wiki/Static_Typing) by integrating program logic directly into the type system itself, helping to prevent common errors like off-by-one errors or invalid state transitions by catching them at [compile time](/wiki/Compile_Time) rather than [runtime](/wiki/Runtime).
+Look [Idris 2](https://fdh5g93z3smd67nfz2w6.c.websim.com/wiki/idris_2)\
+\
+The use of "idris2" (without a space) is common in technical contexts like command-line tools (`idris2 --init`) or GitHub repository names, while "[Idris 2](https://fdh5g93z3smd67nfz2w6.c.websim.com/wiki/idris_2)" (with a space and capitalization) is typically used when referring to the language in documentation or general discussion.
+## See also
+- [Idris](/wiki/Idris)
... 27 more lines
sscientist's avatarsscientist#62 months agoManual
+6-6
-Idris2 is the evolution of the [Idris](/wiki/Idris) programming language, designed specifically for general-purpose [functional programming](/wiki/Functional_Programming) while enhancing the guarantees and reliability of the code developers write. This next-generation language is notable for its **full support of [dependent types](/wiki/Dependent_Types)**, a powerful feature that allows programmers to specify and verify precise properties of their programs directly within the [type system](/wiki/Type_System).
-[Dependent types](/wiki/Dependent_Types) enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios. For instance, one can define a type for a list that is guaranteed to have a certain length, or a function that is only callable with valid, pre-validated inputs. This level of precision goes beyond traditional [static typing](/wiki/Static_Typing) by integrating program logic directly into the type system itself.
-Idris2 has been bootstrapped in Idris itself, leading to significant enhancements in performance compared to its predecessor. By leveraging a high-performance backend like [Chez Scheme](/wiki/Chez_Scheme) by default, Idris2 achieves faster [compilation](/wiki/Compilation) times and often generates more efficient executables. The aim is to create a more efficient environment, enabling faster execution of programs and making Idris2 suitable for a broader range of applications, from small scripts to large-scale systems requiring native code performance.
-With a focus on building a more robust foundation, Idris2 addresses some of the limitations and challenges present in its predecessor. This includes improvements in the tooling, such as enhanced editor support, a more streamlined build system, and better error reporting, which together improve the overall user experience. Furthermore, the growing library ecosystem and active community contribute to making Idris2 more accessible and productive for developers.
-One of the most significant advantages of Idris2 is its ability to empower programmers to formally state and prove properties about their code during the [compilation](/wiki/Compilation) process. This leads to software that is not only **robust** but also has reduced [runtime errors](/wiki/Runtime_Error). Through this feature, developers can have high confidence in the correctness of their applications.
+Idris2 is the evolution of the [Idris](/wiki/Idris) programming language, designed specifically for general-purpose [functional programming](/wiki/Functional_Programming) while enhancing the guarantees and reliability of the code developers write. This next-generation language is notable for its **full support of [dependent types](/wiki/Dependent_Types)**, a powerful feature that allows programmers to specify and verify precise properties of their programs directly within the [type system](/wiki/Type_System). It aims to combine the expressiveness of functional programming with the strong guarantees typically found in [proof assistants](/wiki/Proof_Assistant).
+[Dependent types](/wiki/Dependent_Types) enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios. For instance, one can define a type for a list that is guaranteed to have a certain length, or a function that is only callable with valid, pre-validated inputs. This level of precision goes beyond traditional [static typing](/wiki/Static_Typing) by integrating program logic directly into the type system itself, helping to prevent common errors like off-by-one errors or invalid state transitions by catching them at [compile time](/wiki/Compile_Time) rather than [runtime](/wiki/Runtime).
+Idris2 has been bootstrapped in Idris itself, leading to significant enhancements in performance compared to its predecessor. This [self-hosting](/wiki/Self-Hosting) process allowed the core language developers to refine the language's internals using Idris itself, leading to a more optimized and stable [compiler](/wiki/Compiler). By leveraging a high-performance backend like [Chez Scheme](/wiki/Chez_Scheme) by default, Idris2 achieves faster [compilation](/wiki/Compilation) times and often generates more efficient executables. The choice of [Chez Scheme](/wiki/Chez_Scheme) as a primary backend is strategic; it provides a highly optimized runtime environment known for its performance and efficient [garbage collection](/wiki/Garbage_Collection), contributing significantly to Idris2's speed and resource usage profile. This makes Idris2 a viable choice for applications that demand high performance, going beyond purely academic or research contexts.
+With a focus on building a more robust foundation, Idris2 addresses some of the limitations and challenges present in its predecessor. This includes improvements in the tooling, such as enhanced editor support, a more streamlined build system, and better error reporting, which together improve the overall user experience. Beyond basic tooling, the development ecosystem surrounding Idris2 has seen significant growth. The [standard library](/wiki/Standard_Library) has been refined, offering a broader and more consistent set of data structures and utilities. Community contributions in the form of third-party [libraries](/wiki/Libraries) further extend its capabilities, covering areas from web development to data manipulation. The active user community provides support, shares knowledge, and contributes to the ongoing evolution of the language and its tooling, fostering a collaborative environment for learning and development.
+One of the most significant advantages of Idris2 is its ability to empower programmers to formally state and prove properties about their code during the [compilation](/wiki/Compilation) process. This leads to software that is not only **robust** but also has reduced [runtime errors](/wiki/Runtime_Error). Through this feature, developers can have high confidence in the correctness of their applications, ensuring that critical properties, such as a sorting algorithm always producing a sorted list, are mathematically guaranteed by the type system.
... 7 more lines
sscientist's avatarsscientist#52 months agoManual
+5-3
-[Dependent types](/wiki/Dependent_Types) enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios.
-Idris2 has been bootstrapped in Idris itself, leading to enhancements in performance compared to its predecessor. The aim is to create a more efficient environment, enabling faster [compilation](/wiki/Compilation) and execution of programs. These performance gains are beneficial for both small scripts and large-scale applications.
-With a focus on building a more robust foundation, Idris2 addresses some of the limitations and challenges present in its predecessor. This includes improvements in the tooling, library support, and overall user experience, making it more accessible to developers.
+[Dependent types](/wiki/Dependent_Types) enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios. For instance, one can define a type for a list that is guaranteed to have a certain length, or a function that is only callable with valid, pre-validated inputs. This level of precision goes beyond traditional [static typing](/wiki/Static_Typing) by integrating program logic directly into the type system itself.
+Idris2 has been bootstrapped in Idris itself, leading to significant enhancements in performance compared to its predecessor. By leveraging a high-performance backend like [Chez Scheme](/wiki/Chez_Scheme) by default, Idris2 achieves faster [compilation](/wiki/Compilation) times and often generates more efficient executables. The aim is to create a more efficient environment, enabling faster execution of programs and making Idris2 suitable for a broader range of applications, from small scripts to large-scale systems requiring native code performance.
+With a focus on building a more robust foundation, Idris2 addresses some of the limitations and challenges present in its predecessor. This includes improvements in the tooling, such as enhanced editor support, a more streamlined build system, and better error reporting, which together improve the overall user experience. Furthermore, the growing library ecosystem and active community contribute to making Idris2 more accessible and productive for developers.
+#### Type-Driven Development
+Idris2 strongly encourages a methodology known as [Type-Driven Development](/wiki/Type_Driven_Development). In this approach, developers first define the types that accurately model their problem domain, including intricate invariants and relationships, and then write the code to satisfy these types. This process not only guides the development but also ensures that the resulting implementation inherently adheres to the specified properties, making the development process more systematic and less prone to errors. It allows for a more declarative style where the types act as executable specifications for the program's behavior.
... 3 more lines
sscientist's avatarsscientist#42 months agoManual
+23-23
-## Idris2: Advancing Functional Programming with Dependent Types
-Idris2 is the evolution of the Idris programming language, designed specifically for general-purpose functional programming while enhancing the guarantees and reliability of the code developers write. This next-generation language is notable for its **full support of dependent types**, a powerful feature that allows programmers to specify and verify precise properties of their programs directly within the type system.
-### Key Features of Idris2
-#### Full Support for Dependent Types
-Dependent types enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios.
+## Idris2: Advancing Functional Programming with Dependent Types
+Idris2 is the evolution of the [Idris](/wiki/Idris) programming language, designed specifically for general-purpose [functional programming](/wiki/Functional_Programming) while enhancing the guarantees and reliability of the code developers write. This next-generation language is notable for its **full support of [dependent types](/wiki/Dependent_Types)**, a powerful feature that allows programmers to specify and verify precise properties of their programs directly within the [type system](/wiki/Type_System).
+### Key Features of Idris2
+#### Full Support for Dependent Types
+[Dependent types](/wiki/Dependent_Types) enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios.
... 41 more lines
sscientist's avatarsscientist#32 months agoManual
+23-5
-**Idris2** is the next generation of the [Idris](/wiki/Idris) programming language, designed for general-purpose [functional programming](/wiki/Functional_Programming) with strong guarantees. It is distinguished by its full support for [dependent types](/wiki/Dependent_Types), allowing programmers to express precise properties about their programs directly in the type system. Originally bootstrapped in Idris itself, Idris2 aims for increased performance and a more robust foundation. It empowers programmers to formally state and prove properties about their code at compile time, leading to highly robust and verified software.
-## See also
-- [Idris](/wiki/Idris)
-- [Type Theory](/wiki/Type_Theory)
-- [Formal Verification](/wiki/Formal_Verification)
+## Idris2: Advancing Functional Programming with Dependent Types
+Idris2 is the evolution of the Idris programming language, designed specifically for general-purpose functional programming while enhancing the guarantees and reliability of the code developers write. This next-generation language is notable for its **full support of dependent types**, a powerful feature that allows programmers to specify and verify precise properties of their programs directly within the type system.
+### Key Features of Idris2
+#### Full Support for Dependent Types
+Dependent types enable types to depend on values, which means that types can be more expressive and can capture more complex invariants about the data. This feature allows programmers to encode logical assertions about their code, making bugs significantly less likely and ensuring correctness in various scenarios.
... 23 more lines
sscientist's avatarsscientist#22 months agoManual
+1-1
-**Idris2** is a pure [functional programming](/wiki/Functional_Programming) language with full [dependent types](/wiki/Dependent_Types), building upon the foundations of its predecessor. It empowers programmers to formally state and prove properties about their code at compile time, leading to highly robust and verified software.
+**Idris2** is the next generation of the [Idris](/wiki/Idris) programming language, designed for general-purpose [functional programming](/wiki/Functional_Programming) with strong guarantees. It is distinguished by its full support for [dependent types](/wiki/Dependent_Types), allowing programmers to express precise properties about their programs directly in the type system. Originally bootstrapped in Idris itself, Idris2 aims for increased performance and a more robust foundation. It empowers programmers to formally state and prove properties about their code at compile time, leading to highly robust and verified software.
sscientist's avatarsscientist#12 months ago
+6
Auto-generated stub article
+**Idris2** is a pure [functional programming](/wiki/Functional_Programming) language with full [dependent types](/wiki/Dependent_Types), building upon the foundations of its predecessor. It empowers programmers to formally state and prove properties about their code at compile time, leading to highly robust and verified software.
+## See also
+- [Idris](/wiki/Idris)
+- [Type Theory](/wiki/Type_Theory)
+- [Formal Verification](/wiki/Formal_Verification)
... 1 more lines