Replies: 4 comments 5 replies
-
To have a proof about the correctness of the implementation of the LSP, first we need to have the LSP formalized [1] that can be easily translated to Idris. If we have that we could start to think about how to match the actual implementation and the correctness proof. I think @ShinKage original dependently typed approach is good enough for the current state of the LSP, which is really a part-time project with low priority for many of us. For me personally, I couldn't invest time to formalize the LSP protocol and refactor the LSP to respect such a construct. [1] Do you know if such a thing exist? Although by the size of the protocol I think that would be a big (or even a research) project. |
Beta Was this translation helpful? Give feedback.
-
Yes the LSP Specification exists: https://microsoft.github.io/language-server-protocol/specifications/lsp/3.17/specification/. But I am sure you knew that. A specification that is easily translated or a language that supports representing specifications is the crux of software development. From a preliminary review, I believe the Idris LSP can be structured to match the LSP specification. I was surprised that it was not. I strongly disagree that the Idris-LSP is "good enough." It is a full time project for me to find a programming language that can helps a developer verify that requirements are being implemented. I also disagree that it would be a research project. As I said after conducting a preliminary review, I was surprised to see that the Code did not resemble the specification. And the reason it surprised me is because it looked a reasonable approach to follow the LSP specification. It would also demonstrate that a type driven development can verify (prove) that it has implemented a set of requirements. |
Beta Was this translation helpful? Give feedback.
-
Can you give an example of what you mean by "can be structure to match the LSP specification". For example, the datatypes in |
Beta Was this translation helpful? Give feedback.
-
Thank you , you have answered my question. My goal is to bring natural language requirements and natural language specifications into software design. Type Driven Development appears to be an excellent programming language to support that effort. So the majority of my effort is to see if it can be accomplished. That is quite a list of questions. It is highly unlikely one will ever see a formal specification for LSP, e.g. Z notation. I am sure we all know that software requirements are almost always provided in a natural language format. It is very common for the software team to develop an architecture and a model of the design space based on these natural language descriptions of Concepts of Operations, Requirements and verification Criteria. Of which, puts the burden onr the software team to structure the design in a manor that others can quickly understand Nonetheless, the LSP specification is typical of the amount of detail with which software developers have to work. Make specification more machine-readable. I can offer one paper I have read with regard to LSP: Editing Support for Software Languages: Implementation Practices in Language Server Protocols Section 4.3 Concern: Structuring Servers. I would have probably started there. Or set up a plan to migrate. Towards a Language Server Protocol Infrastructure for Graphical Modeling. I also looked at the agda-lsp and haskell-lsp. They were easier to follow. |
Beta Was this translation helpful? Give feedback.
-
Since the LSP is written in IDRIS, can it then be proven that the LSP adheres to the LSP 3.17?
Beta Was this translation helpful? Give feedback.
All reactions