CurryInfo: Analysis and Verification Information about Curry Packages

CurryInfo is a tool to collect and provide analysis and verification information about entities (operations, types, classes) defined Curry modules which are contained in Curry packages. This website contains a collection of this information and a web service for a convenient access of it. It can be used by other Curry tools which require such information, like a REPL or a Curry Language Server.

Here is some more information about CurryInfo and this website.

  • The header link "All Packages" leads to an overview page containing information about all packages as stored in the CurryInfo web service. This information is nightly updated when new packages or versions are uploaded by the Masala package management system. One can browse through these packages to see the available information. Instead of browsing through these web pages, it is easier to use the tool cpm-query to access information about operations, types, and classes in an interactive Curry system or the Curry Language Server (see below for more details).
  • The header link "CurryInfo Cache (.tgz)" refers to a gzipped tar file containing the CurryInfo cache of the CurryInfo web service. One can download and install it (in ~/.curry_info_cache) in order to use CurryInfo on the local machine instead of this CurryInfo web service. The download and installation can easily be done by the command
    curl -sSL https://cpm.curry-lang.org/curry-info/download-curry-info-cache.sh | sh
  • More details about CurryInfo and installation instructions are available in the CurryInfo repository. Note that a local installation of CurryInfo is not strictly required since one can use this web service via other tools (see below).
  • There is also a list of all requests, i.e., all kinds of information available for the various entities in Curry packages. Since CurryInfo is designed as a generic and extensible system, one can easily extend these requests with new ones (see the CurryInfo repository for more information about extending CurryInfo).

Use CurryInfo in the Curry Language Server

The Curry Language Server supports an extension for invoking programs when hovering over particular program entities, like operations or types. If one uses the tool cpm-query, one can see analysis and verification information when hovering over an entity defined in some module of an existing Curry package. The image below shows a screenshot when hovering over the standard Prelude operation length. Analysis infos for length See the description of the Curry package cpm-query for more information how to configure the Curry Language Server to show this information.

Use CurryInfo in a Curry REPL

One can also show information from CurryInfo in a REPL of a Curry system, e.g., PAKCS. This is supported by the command :info which invokes the tool cpm-query to show the information. In the screenshot below, the command :info length shows information about operation length (the operation must be in the scope of the REPL, otherwise it needs to be qualified) and the command :info class Prelude.Eq shows information about the class Eq defined in module Prelude (the module must be in some package of the current application). Analysis infos shown in PAKCS Note that only a subset of all available information is shown in the default case. One can adjust the information to be shown by modifying the file ~/.cpmqueryrc which is generated when cpm-query is invoked for the first time. One can also show all available information by adding the option --showall in the :info command, as shown in the screenshot below. All analysis infos shown in PAKCS