Koffect
所属分类:编程语言基础
开发工具:kotlin
文件大小:0KB
下载次数:0
上传日期:2023-09-19 15:37:53
上 传 者:
sh-1993
说明: 一种面向上下文的编程语言,支持多个编程范例,重点是面向上下文的程序设计。,
(A context-oriented programming language with support for multiple programming paradigms with a focus on context oriented programming.,)
文件列表:
.idea/ (0, 2023-12-11)
.idea/codeStyles/ (0, 2023-12-11)
.idea/codeStyles/Project.xml (263, 2023-12-11)
.idea/codeStyles/codeStyleConfig.xml (149, 2023-12-11)
.idea/inspectionProfiles/ (0, 2023-12-11)
.idea/inspectionProfiles/Project_Default.xml (276, 2023-12-11)
.idea/kotlinc.xml (175, 2023-12-11)
.idea/misc.xml (458, 2023-12-11)
.idea/vcs.xml (180, 2023-12-11)
CS5001/ (0, 2023-12-11)
CS5001/CS5001CapstoneAssessment.md (4399, 2023-12-11)
CS5001/CS5001DesignDiagrams.md (334, 2023-12-11)
CS5001/CS5001DesignDiagrams/ (0, 2023-12-11)
CS5001/CS5001DesignDiagrams/CS5001DesignDiagram_D0.svg (9509, 2023-12-11)
CS5001/CS5001DesignDiagrams/CS5001DesignDiagram_D1.svg (16811, 2023-12-11)
CS5001/CS5001DesignDiagrams/CS5001DesignDiagram_D2.svg (34394, 2023-12-11)
CS5001/CS5001FinalReport.md (26988, 2023-12-11)
CS5001/CS5001MilestonesTimelineEffortMatrix.md (4374, 2023-12-11)
CS5001/CS5001ProjectConstraints.md (4798, 2023-12-11)
CS5001/CS5001TaskList.md (4085, 2023-12-11)
CS5001/CS5001TeamContract.md (608, 2023-12-11)
CS5001/CS5001UserStories.md (1019, 2023-12-11)
CS5001/CS5001_Fall_Design_Presentation.pptx (20535401, 2023-12-11)
CS5001/Project_Biography.md (2732, 2023-12-11)
CS5001/Project_Description.md (1474, 2023-12-11)
LICENSE (35149, 2023-12-11)
build.gradle.kts (337, 2023-12-11)
design_notes/ (0, 2023-12-11)
design_notes/async.md (7028, 2023-12-11)
design_notes/context.md (9219, 2023-12-11)
design_notes/correctness.md (11031, 2023-12-11)
design_notes/tasklist.md (4029, 2023-12-11)
gradle.properties (27, 2023-12-11)
gradle/ (0, 2023-12-11)
gradle/wrapper/ (0, 2023-12-11)
... ...
# Koffect Programming Language
## Contents
- [Koffect](https://github.com/JarnaChao09/Koffect/blob/master/#koffect)
- [Language Goals](https://github.com/JarnaChao09/Koffect/blob/master/#language-goals)
- [Syntax Examples](https://github.com/JarnaChao09/Koffect/blob/master/#syntax-examples)
- [Feature List](https://github.com/JarnaChao09/Koffect/blob/master/#feature-list)
- [Inspriations](https://github.com/JarnaChao09/Koffect/blob/master/#inspirations--prior-arts--similar-features)
## Koffect
Welcome to Koffect!
A research language focusing on the applications of context-oriented/context-aware programming
to general purpose programming. From applications of contextual rigor (such as mathematical proof writing), to resource
management (such as opening and closing files/connections/sockets), to domain specific languages, programming contains
a lot of implicit contexts and mental context management. This project aims to create a language around the concept of
explicit contexts to reduce the mental gymnastics and boilerplate needed to maintain context dependent code.
## Language Goals
The goal of this language is to research and implement a general purpose programming language specializing in
context-oriented programming.
Some areas of focus that this project hopes to tackle are:
- The application of context-oriented programming to tackle metaprogramming challenges
- The application of context-oriented programming to ensure code correctness, through the modelling of context dependent
fields such as mathematical correctness or asynchronous code
- The application of context-oriented programming to model real world contextual dependent situations in code with
minimal boilerplate
- The application of context-oriented programming to the creation and modelling of domain specific languages
## Syntax Examples
> TODO: Finalization of language in progress
## Feature List
> TODO: Finalization of language in progress
## Inspirations / Prior Arts / Similar Features
- [Effects Bibliography](https://github.com/JarnaChao09/Koffect/blob/master/https://github.com/yallop/effects-bibliography)
- Collection of relative literature applying to algebraic effects (and coeffects by proxy)
- [Koka](https://github.com/JarnaChao09/Koffect/blob/master/https://koka-lang.github.io/koka/doc/index.html)
- Language implementing algebraic effect handlers with lexical effect tracking
- [Eff](https://github.com/JarnaChao09/Koffect/blob/master/https://www.eff-lang.org/)
- Language implementing algebraic effect handlers working on general first-class computational effects
- [Effekt](https://github.com/JarnaChao09/Koffect/blob/master/https://effekt-lang.org/)
- Language implementing algebraic effect handlers with effect safety and effect polymorphism following Scala syntax
- [Coeffect](https://github.com/JarnaChao09/Koffect/blob/master/https://tomasp.net/coeffects/)
- Language implementing algebraic coeffects through implicit parameters
- [OCaml Multicore](https://github.com/JarnaChao09/Koffect/blob/master/https://github.com/ocaml/ocaml)
- Ocaml 5.0 Multicore added unchecked effect handlers for concurrent programming
- [Kotlin Context Receivers](https://github.com/JarnaChao09/Koffect/blob/master/https://github.com/Kotlin/KEEP/blob/master/proposals/context-receivers.md)
- Kotlin 1.6.20 added experimental support for functions with multiple receivers, also coined as context receivers
- [Scala contextual/implicit parameters](https://github.com/JarnaChao09/Koffect/blob/master/https://docs.scala-lang.org/tour/implicit-parameters.html)
- Scala 2 has contextual/implicit parameters which were later refined in Scala 3 to use the `using`/`given` syntax
- [Haskell implicit parameters](https://github.com/JarnaChao09/Koffect/blob/master/https://ghc.gitlab.haskell.org/ghc/doc/users_guide/exts/implicit_parameters.html)
- Haskell implements implicit parameters as part of type system leading to full type system security with implicit
parameters
- [Python Context Managers](https://github.com/JarnaChao09/Koffect/blob/master/https://docs.python.org/3/reference/datamodel.html#context-managers)
- Python implements context handlers with the `__enter__` and `__exit__` methods to model runtime defined contexts
- [Ruby Refinements](https://github.com/JarnaChao09/Koffect/blob/master/https://ruby-doc.org/core-3.1.0/Refinement.html)
- Ruby implements lexical monkey patching (introduction of a context into a scope) with refinements
- [Javascript Explicit Resource Management](https://github.com/JarnaChao09/Koffect/blob/master/https://github.com/tc39/proposal-explicit-resource-management)
- Javascript TC39 proposal (currently) in stage 3 of adding resource managers using the `using` keyword
and `Symbol.dispose` method
- [C# `using` and `IDisposable`](https://github.com/JarnaChao09/Koffect/blob/master/https://learn.microsoft.com/en-us/dotnet/csharp/language-reference/statements/using)
- C# resource management through the use of the `IDisposable` interface and `using` keyword
- [Java try-with-resource and `AutoCloseable`](https://github.com/JarnaChao09/Koffect/blob/master/https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html)
- Java resource management through the use of the `Closeable` and `AutoCloseable` interfaces with the `try` keyword
近期下载者:
相关文件:
收藏者: