Re: [racket-users] Inference for polymorphic functions not supported?

2020-05-18 Thread Hendrik Boom
On Mon, May 18, 2020 at 04:51:26PM -0400, Sam Tobin-Hochstadt wrote:
> The systematic way to do it is to use `inst`.
> 
> Here's the first example:
> 
> (define hash-list : (Listof (Pair Symbol Natural)) (list))
> ((inst sort (Pair Symbol Natural) String) hash-list string ((p : (Pair Symbol Natural))) (symbol->string (car p))) #:cache-keys?
> #t)
> 
> This program works already, but I wasn't sure what the `y` binding was
> doing in your second example:

I don't either.  It was originally someone else's program, which I'm coverting 
to typed 
Racket in order to understand it better.

-- hendrik

> 
> (for*/list : (Listof (Pair Symbol Natural)) ((p : (Pair Symbol
> Natural) (in-list hash-list))
>  (k : Symbol (in-value (car p)))
>  (v : Natural (in-value (cdr p)))
>  #:when (not (= v 1))
>  )
>   (cons k v))
> 
> Sam
> 
> On Mon, May 18, 2020 at 4:33 PM Hendrik Boom  wrote:
> >
> > I keep getting the messages like
> >
> > Type Checker: Inference for polymorphic keyword functions not supported in: 
> > (sort hash-list string > (symbol->string (car p))) #:cache-keys? #t)
> >
> > or
> >
> > Type Checker: Polymorphic function `cons' could not be applied to arguments:
> > Types: a (Listof a) -> (Listof a)
> >a b -> (Pairof a b)
> > Arguments: (U Exact-Nonnegative-Integer Symbol) (Listof (Pairof Symbol 
> > Nonnegative-Integer))
> > Expected result: (Listof (Pairof Symbol Nonnegative-Integer))
> >  in: (for*/list : (Listof (Pair Symbol Natural)) ((p : (Pair Symbol 
> > Natural) (in-list (hash->sorted-list pname-map))) (k : Symbol (in-value 
> > (car p))) (v : Natural (in-value (cdr p))) #:when (not (= v 1)) (y (list k 
> > v))) y)
> >
> > Is there some systematic way to code this explicitly so it
> > doesn't have to try guesswork? (hich it refuses to do)
> >
> > And is it really unable to figure out that an
> > Exact-Nonnegative-Integer is a Nonnegative-Integer?
> >
> > -- hendrik
> >
> > --
> > You received this message because you are subscribed to the Google Groups 
> > "Racket Users" group.
> > To unsubscribe from this group and stop receiving emails from it, send an 
> > email to racket-users+unsubscr...@googlegroups.com.
> > To view this discussion on the web visit 
> > https://groups.google.com/d/msgid/racket-users/20200518203342.4vcvrsrvkmld4tmh%40topoi.pooq.com.

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20200518221533.uwflu2ulyzeolcmv%40topoi.pooq.com.


Re: [racket-users] Inference for polymorphic functions not supported?

2020-05-18 Thread Ben Greenman
On 5/18/20, Hendrik Boom  wrote:
> I keep getting the messages like
>
> Type Checker: Inference for polymorphic keyword functions not supported in:
> (sort hash-list string (symbol->string (car p))) #:cache-keys? #t)

The way to avoid guesswork here is `inst`:

 ((inst sort (Pair Symbol Natural) String) )

Next time you see one of these errors, print the type of the function
or check the DrRacket blue box to figure out which/how many arguments
the `inst` needs.

> or
>
> Type Checker: Polymorphic function `cons' could not be applied to
> arguments:
> Types: a (Listof a) -> (Listof a)
>a b -> (Pairof a b)
> Arguments: (U Exact-Nonnegative-Integer Symbol) (Listof (Pairof Symbol
> Nonnegative-Integer))
> Expected result: (Listof (Pairof Symbol Nonnegative-Integer))
>  in: (for*/list : (Listof (Pair Symbol Natural)) ((p : (Pair Symbol Natural)
> (in-list (hash->sorted-list pname-map))) (k : Symbol (in-value (car p))) (v
> : Natural (in-value (cdr p))) #:when (not (= v 1)) (y (list k v))) y)
>
> Is there some systematic way to code this explicitly so it
> doesn't have to try guesswork? (hich it refuses to do)
>
> And is it really unable to figure out that an
> Exact-Nonnegative-Integer is a Nonnegative-Integer?

This looks like a genuine type error, because (U
Exact-Nonnegative-Integer Symbol) is not a Pair.

Should the loop body say `p` instead of `y`?

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CAFUu9R7v4wnd9WrOdNEd6f4oTn5oGhPbe%3DtSgympmDuPQt0N3A%40mail.gmail.com.


[racket-users] Inference for polymorphic functions not supported?

2020-05-18 Thread Hendrik Boom
I keep getting the messages like

Type Checker: Inference for polymorphic keyword functions not supported in: 
(sort hash-list stringstring 
(car p))) #:cache-keys? #t)

or

Type Checker: Polymorphic function `cons' could not be applied to arguments:
Types: a (Listof a) -> (Listof a)
   a b -> (Pairof a b)
Arguments: (U Exact-Nonnegative-Integer Symbol) (Listof (Pairof Symbol 
Nonnegative-Integer))
Expected result: (Listof (Pairof Symbol Nonnegative-Integer))
 in: (for*/list : (Listof (Pair Symbol Natural)) ((p : (Pair Symbol Natural) 
(in-list (hash->sorted-list pname-map))) (k : Symbol (in-value (car p))) (v : 
Natural (in-value (cdr p))) #:when (not (= v 1)) (y (list k v))) y)

Is there some systematic way to code this explicitly so it 
doesn't have to try guesswork? (hich it refuses to do)

And is it really unable to figure out that an 
Exact-Nonnegative-Integer is a Nonnegative-Integer? 

-- hendrik

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/20200518203342.4vcvrsrvkmld4tmh%40topoi.pooq.com.


[racket-users] "Concolic Testing with Higher-Order Inputs"

2020-05-18 Thread 'John Clements' via users-redirect
Am I the first one to post about this? Looks like Robby’s giving a talk for the 
Chalmers online functional programming seminar series!

http://chalmersfp.org/

(and yes, this URL is non-ssl only, sigh)

Date: June 15th, 7am PDT / 10am EDT / 1400 UTC / 16:00 CEST

Title: “Concolic Testing with Higher-Order Inputs”

Abstract:

Concolic testing, dating back to the mid 2000s, has proven to be an effective, 
automatic testing technique. Roughly, a concolic tester monitors the program's 
behavior, collecting information that connects the branches that the program 
takes with the original inputs to the program. It then uses that information 
(with the help of an SMT solver) to try to construct new inputs to force the 
program to take different branches, in an attempt to uncover problems with the 
program. 

Most of the existing work on concolic testing focuses on the situation where 
the inputs to the program being tested are flat values (e.g., numbers) instead 
of higher-order values (e.g., objects or functions). Higher-order inputs, 
however, present challenges for concolic testing because the interplay between 
the input and the program being tested is much more complex. 

In this talk, I'll discuss the way we generalize concolic testing to 
higher-order inputs, explaining why it is challenging and how we answer the 
challenge. The talk will be example driven and I will try to bring across the 
intuition for how we conceptualize the generalization to higher-order inputs 
and the results we have so far.



I admit that I haven’t caught either of the first two talks in this series… 
apparently the Simon Peyton Jones one had some serious technical difficulties. 
Anyhow, those of us on the West Coast are probably getting more and more used 
to waking up early for global meetings, and this one certainly looks like a 
good one.

Can’t wait!

John



-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/da10ff00-c5c6-4027-a2c9-9b1ee0a721cf%40mtasv.net.


Re: [racket-users] What does PLT stand for?

2020-05-18 Thread Geoffrey Teale
I believe it stands for "Programming Languages Team" - there was/is a
cross-university research group of that name.
-- 
Geoff 

On Mon, 18 May 2020 at 16:12, Gary Schiltz  wrote:

> I thought it would be easy to find the answer to this (unimportant)
> question, but I haven't found one yet. Like a song I can't get out of my
> head, I keep looking, so please help satisfy my curiosity...
>
> --
> You received this message because you are subscribed to the Google Groups
> "Racket Users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to racket-users+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/racket-users/261d24f6-ec53-4afb-85cf-60e75bd04909%40googlegroups.com
> 
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/CALx3QY8GwaJr1Ht2PZHQGTeY%3DkcSOYPf3J%2B1yeG2gKb66Bh5sA%40mail.gmail.com.


[racket-users] [CfP] DLS 2020 - Dynamic Languages Symposium, submission deadline July 9th

2020-05-18 Thread Matthew Flatt
The 16th Dynamic Languages Symposium (DLS) at SPLASH 2020 is the
premier forum for researchers and practitioners to share research and
experience on all aspects on dynamic languages.

DLS 2020 invites high quality papers reporting original research and
experience related to the design, implementation, and applications of
dynamic languages. Areas of interest include, but are not limited to,

 - innovative language features
 - innovative implementation techniques
 - innovative applications
 - development environments and tools
 - experience reports and case studies
 - domain-oriented programming
 - late binding, dynamic composition, and run-time adaptation
 - reflection and metaprogramming
 - software evolution
 - language symbiosis and multi-paradigm languages
 - dynamic optimization
 - interpretation
 - just-in-time and ahead-of-time compilation
 - soft/optional/gradual typing
 - hardware support
 - educational approaches and perspectives
 - semantics of dynamic languages
 - frameworks and languages for the Cloud and the IoT

Submission Details
--

Submissions must neither be previously published nor under review at
other events. DLS 2020 uses a lightweight double-blind, two-phase
reviewing process.

Papers are assumed to be in one of the following categories:

   **Research Papers:**  
  describe work that advances the current state of the art

   **Experience Papers:**  
  describe insights gained from substantive practical  
  applications that should be of a broad interest

   **Dynamic Pearls:**  
  describe a known idea in an appealing way to remind the  
  community and capture a reader’s interest

The program committee will evaluate each paper based on its
relevance, significance, clarity, and originality.
The paper category needs to be indicated during submission,
and papers are judged accordingly.

Papers are to be [submitted electronically](https://dls20.hotcrp.com/)
in PDF format. Submissions must be in the ACM SIGPLAN conference acmart
format, 10 point font, and should not exceed 12 pages. Please see full
details in the instructions for authors available at:

https://conf.researchr.org/home/dls-2020#Instructions-for-Authors

DLS 2020 will run a two-phase reviewing process to help authors make
their final papers the best that they can be. Accepted papers will be
published in the ACM Digital Library and will be freely available for
one month, starting two weeks before the event.

## Important Deadlines

Abstract Submission (optional): July 2, 2020  
Paper Submission:   July 9, 2020  
First Phase Notification:   August 7, 2020  
Revisions Due:  September 4, 2020
Final Notifications:Septemberr 18, 2020

All deadlines are 23:59 AoE (UTC-12h).

**AUTHORS TAKE NOTE:** The official publication date is the date the
proceedings are made available in the ACM Digital Library. This date
may be up to two weeks prior to the first day of your conference.
The official publication date affects the deadline for any patent
filings related to published work.

Program Committee
-

Alexandre Bergel, U Chile
Shigeru Chiba, U Tokyo
Stéphane Ducasse, Inria
Tim Felgentreff, HPI
Matthew Flatt, U Utah (chair)
Elisa Gonzalez Boix, VUB
Michael Homer, Victoria U Wellington
Mark Marron, Microsoft Research
Anders Møller, Aarhus
Manuel Rigger, ETH
Sukyoung Ryu, KAIST
Jeremy G. Siek, Indiana U
Francesco Zappa Nardelli, Facebook

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/5ec29ef8.1c69fb81.6a24f.3a82SMTPIN_ADDED_MISSING%40gmr-mx.google.com.


[racket-users] What does PLT stand for?

2020-05-18 Thread Gary Schiltz
I thought it would be easy to find the answer to this (unimportant) 
question, but I haven't found one yet. Like a song I can't get out of my 
head, I keep looking, so please help satisfy my curiosity...

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/racket-users/261d24f6-ec53-4afb-85cf-60e75bd04909%40googlegroups.com.