On 10/30/2018 3:56 AM, Richard O'Keefe wrote: > cloogle is all very well, and thank you for the reminder. > However, it answers the wrong question. If you know that > something exists, it will give you (not very much) detail > about it. If you don't know about some new syntax feature > or built-in function &c, it is no help at all. > > Tolerably current documentation is IMPORTANT. > > PS: I have been subscribed to this list for years but had > to change e-address. How do I tell the list server about this?
See: http://www.gnu.org/software/mailman/mailman-member/node22.html Login at: https://mailman.science.ru.nl/mailman/options/clean-list > On Tue, 30 Oct 2018 at 00:03, Mart Lubbers <[email protected]> wrote: > >> Dear Richard, >> >> Allâ„¢ syntactic constructions are index by cloogle[1] nowadays with >> references >> to either the language report or other documents containing the >> information. >> Cloogle also indexes all stable, iTasks and some third party libraries as >> well >> as other things such as compiler messages and ABC instructions. >> >> Best, >> Mart >> >> 1. https://cloogle.org >> >>> Given the language changes, what's the timetable for a Clean 3.0 >>> report? clean-bundle-complete/doc is still the December 2011 >>> version 2.2 report, and the CleanStdEnvAPI.pdf at the web site >>> just now is August 2011. In the source distribution, UserManual.pdf >>> is dated 2001 and Object IO 1.2.1/tutorial.pdf is dated 2000. >>> The clm.1 manual page is dated 2005. >>> >>> On Sat, 20 Oct 2018 at 01:15, John van Groningen <[email protected]> >> wrote: >>> >>>> >>>> Clean 3.0 is now available for Windows and Linux (32 and 64 bit) >>>> and Mac OS X (64 bit) at: >>>> >>>> https://wiki.clean.cs.ru.nl/Download_Clean >>>> >>>> New in version 3.0: >>>> >>>> - Clean now use a FreeBSD license. Previously LGPL was also used. >>>> >>>> - On Mac OS X the compiler generates object code directly, >>>> instead of assembly. >>>> >>>> - Added cpm (Clean Project Manager), a command line tool that uses >>>> the same build system and project files as the CleanIDE. >>>> >>>> - StdEnv: >>>> >>>> - seq,seqList,::St,bind and return are no longer imported >>>> by module StdEnv, but are still defined in module StdFunc >>>> - added module StdFunctions, containing all definitions from >>>> module StdFunc except seq,seqList,::St,bind and return >>>> - module StdEnv imports module StdFunctions instead of StdFunc >>>> >>>> - added import of module StdStrictLists to module StdEnv >>>> >>>> - in module StdGeneric: added types RECORD and >>>> GenericRecordDescriptor, added instance of bimap for RECORD, >>>> removed type GenericInfo and field gcd_fields >>>> >>>> - Language extensions: >>>> >>>> - Hierarchical modules. >>>> >>>> The module name can be used to specify the directory containing the >>>> module. In that case the module name is the list of folder names of >>>> the directory, separated by .'s, followed by a . and the file name. >>>> For example the implementation module X.Y.Z is stored in >>>> file X/Y/Z.icl (file Z.icl in subfolder Y of folder Z). The path >>>> containing the first folder (X in this case) should be added to the >>>> search path for the compiler. >>>> >>>> - Generics: >>>> >>>> - The generic representation of records now uses the RECORD >>>> constructor instead of the OBJECT and CONS constructors. >>>> >>>> - Instances of generic functions for the generic representation >>>> types (UNIT,PAIR,EITHER,OBJECT,CONS,RECORD,FIELD) may be defined >>>> in definition modules (instead of a derive) using the same syntax >>>> as used in implementation modules. This makes it possible for the >>>> compiler to optimise derived generic functions in other modules. >>>> >>>> - In definition modules the used generic info fields for generic >>>> instances of OBJECT, CONS, RECORD and FIELD can be specified by >>>> adding: "of" and the pattern, at the end of the derive statement. >>>> The compiler uses this to generate better code. >>>> >>>> For example if g2 is defined as: >>>> >>>> generic g2 a :: a -> Int; >>>> g2{|CONS of {gcd_name}|} _ _ = size gcd_name; >>>> >>>> add "of {gcd_name}" in the definition module: >>>> >>>> derive g2 CONS of {gcd_name}; >>>> >>>> g2 for CONS will be called with just a gcd_name, instead of a >>>> GenericConsDescriptor record. >>>> >>>> - In definition modules unused generic function dependencies for >>>> generic instances can be specified by adding: "with" and the list >>>> of dependencies, but using _ for unused dependencies. The >> compiler >>>> uses this to generate better code. >>>> >>>> For example if the implementation module defines: >>>> >>>> generic g1 a :: a -> Int; >>>> generic g2 a :: a -> Int; >>>> generic h a | g1 a, g2 a :: a -> Int; >>>> >>>> h{|OBJECT of {gtd_name}|} _ g1 _ (OBJECT a) >>>> = g1 a+size (gtd_name); >>>> >>>> add "with _ g1 _" in the definition module: >>>> >>>> derive h OBJECT of {gtd_name} with _ g1 _; >>>> >>>> h for OBJECT will be called without a function argument for h >>>> (for a of OBJECT), with g1 and without g2, because h and g2 are >>>> not used by the implementation. >>>> >>>> - Expressions: >>>> >>>> - v =: PATTERN in an expression yields True if the expression >>>> matches the PATTERN and False otherwise. Variable names are not >>>> allowed in the PATTERN, but _'s may be used. The compiler >>>> optimizes the case where the pattern consists of just a >>>> constructor, optionally followed by _'s. Otherwise it is >>>> transformed to a case expression. >>>> >>>> The parser accepts additional _'s at the end of the pattern, so >>>> x=:(Constructor _ _) may be written as x=:Constructor _ _. >>>> >>>> For example: >>>> >>>> :: T = X Int | Y Int Int | Z; >>>> >>>> is_X_or_Y :: T -> Bool; >>>> is_X_or_Y t = t=:X _ || t=:Y _ _; >>>> >>>> - =: cannot be used anymore to define variables, >>>> >>>> - #, #! and | may be used in \ expressions. >>>> >>>> For example: >>>> >>>> f :: Bool -> .(Int -> (Int,Int)); >>>> f x = (\ y >>>> #! a=1; >>>> | x >>>> -> (y,a) >>>> # b=2; >>>> -> (a+b,y) >>>> ); >>>> >>>> - Types >>>> >>>> - extensible algebraic types can be defined by adding | .. to the >>>> algebraic type definition (or just .. without constructors). In >>>> other modules additional constructors may be added >>>> (once per module) by using | in the definition instead of = . >>>> >>>> For example, to define extensible type T with constructor A: >>>> >>>> :: T = A Int | .. >>>> >>>> To extended T with constructor B in another module: >>>> >>>> :: T | B Int Int >>>> >> _______________________________________________ >> clean-list mailing list >> [email protected] >> https://mailman.science.ru.nl/mailman/listinfo/clean-list >> > > > _______________________________________________ > clean-list mailing list > [email protected] > https://mailman.science.ru.nl/mailman/listinfo/clean-list > _______________________________________________ clean-list mailing list [email protected] https://mailman.science.ru.nl/mailman/listinfo/clean-list
