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

Reply via email to