Perhaps I should have included a more explicit example:
(2) -> y:f()$test(Integer) := [1,2,3]
(2) [1,2,3]
Type: List(Integer)
On Fri, Aug 19, 2011 at 3:53 PM, Bill Page <[email protected]> wrote:
> On Fri, Aug 19, 2011 at 3:34 PM, Gabriel Dos Reis <[email protected]> wrote:
>>
>> I thought you were after something more elaborate where an operation
>> from a domain has a dependent type...
>>
>> Note also that Spad does not work properly with operations returning
>> types -- for very deep implementation reasons, one that the Haskell
>> people also faced when they added type families (i.e. type-level
>> functions, still not accepting values at that level) leading to redesign
>> of Haskell type rules and extension of its theoretical foundation.
>>
>
> Here is a domain exporting an operation that returns a type. Although
> one might claim that the type that it returns is not explicitly
> dependent ...
>
> (1) -> )sys cat dep2.spad
>
> )abbrev domain TEST test
> test(x:Ring): with
> f : () -> LinearAggregate(x)
> == add
> f() : LinearAggregate(x) == List (x)
>
> (1) -> )co dep2.spad
> Compiling FriCAS source code from file /home/page/dep2.spad using
> old system compiler.
> Illegal NRLIB
> TEST.NRLIB claims that its constructor name is the domain test but
> test is already known to be the for package TEST .
> TEST abbreviates domain test
> ------------------------------------------------------------------------
> initializing NRLIB TEST for test
> compiling into NRLIB TEST
> compiling exported f : () -> LinearAggregate x
> Time: 0.01 SEC.
>
> (time taken in buildFunctor: 0)
>
> ;;; *** |test| REDEFINED
>
> ;;; *** |test| REDEFINED
> Time: 0 SEC.
>
>
> Cumulative Statistics for Constructor test
> Time: 0.01 seconds
>
> finalizing NRLIB TEST
> Processing test for Browser database:
> --->/home/page/dep2.spad-->test((f ((LinearAggregate x)))): Not documented!!!!
> --->/home/page/dep2.spad-->test(constructor): Not documented!!!!
> --->/home/page/dep2.spad-->test(): Missing Description
> ; compiling file "/home/page/TEST.NRLIB/TEST.lsp" (written 19 AUG 2011
> 03:46:38 PM):
>
> ; file: /home/page/TEST.NRLIB/TEST.lsp
> ; in: DEFUN |test;|
> ; (BOOT::|haddProp| BOOT::|$ConstructorCache| 'BOOT::|test| (LIST
> BOOT::DV$1)
> ; (CONS 1 BOOT::$))
> ;
> ; caught WARNING:
> ; undefined variable: |$ConstructorCache|
>
> ; in: DEFUN |test|
> ; (VMLISP:HGET BOOT::|$ConstructorCache| 'BOOT::|test|)
> ; --> GETHASH
> ; ==>
> ; (SB-IMPL::GETHASH3 'BOOT::|test| BOOT::|$ConstructorCache| NIL)
> ;
> ; caught WARNING:
> ; undefined variable: |$ConstructorCache|
> ;
> ; compilation unit finished
> ; Undefined variable:
> ; |$ConstructorCache|
> ; caught 2 WARNING conditions
>
> ; /home/page/TEST.NRLIB/TEST.fasl written
> ; compilation finished in 0:00:00.022
> ------------------------------------------------------------------------
> test is now explicitly exposed in frame frame1
> test will be automatically loaded when needed from
> /home/page/TEST.NRLIB/TEST
>
> (1) -> x:f := [1,2,3]
>
> (1) [1,2,3]
> Type: List(PositiveInteger)
> (2) ->
>
> ---
>
> I could imagine that there would be cases where this does not work
> properly, whether by design flaw or bugs. Can you give a simple
> example?
>
> Regards,
> Bill Page.
>
--
You received this message because you are subscribed to the Google Groups
"FriCAS - computer algebra system" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/fricas-devel?hl=en.