From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 88930 invoked by alias); 18 Sep 2017 08:17:02 -0000 Mailing-List: contact kawa-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: kawa-owner@sourceware.org Received: (qmail 88713 invoked by uid 89); 18 Sep 2017 08:17:01 -0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-1.0 required=5.0 tests=AWL,BAYES_00,FREEMAIL_FROM,RCVD_IN_DNSWL_NONE,RCVD_IN_SORBS_SPAM,SPF_PASS autolearn=no version=3.3.2 spammy= X-HELO: mail-wr0-f177.google.com Received: from mail-wr0-f177.google.com (HELO mail-wr0-f177.google.com) (209.85.128.177) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Mon, 18 Sep 2017 08:17:00 +0000 Received: by mail-wr0-f177.google.com with SMTP id u96so5497047wrb.6 for ; Mon, 18 Sep 2017 01:16:59 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to:cc; bh=dqKvQW/ttWEMgX0jh9dqMYPm6s/gJvjFv5yK9tMQTlc=; b=pDeg9XQ4WbYYdNCoa+SXKsH/+PGtkZ272wmqzucRyel5b3CRXPJoICLTmTQE7s1j9r sdzpFfuJVi9B9GdDr8EM/2X2cO0QSYJ+RGEwbF5w3cNcy+b2eKPa55Hil4CAO3rz1oak ICW8NEZxOFfE/aFcCR28GqsCUsBEpQcFpneoEEJsxZIDogXCZ8PHGfPwXMadYPPJqcCx RH4ffq9QjLACHYnX4l+jSYH8HYniNaqWzfJhtxBNLU8pQCwztdpLslDpg7jkJpjhb54h 7jlXtF/IWZkB/OOjPYmw6M+nBY4A/G6MMkQQMmBLFkjaFjXgUekWsgyCDHgjlOsGrCmR CiIw== X-Gm-Message-State: AHPjjUjPhdPVJuDrZrJvd47LSvoNFvaWEPeX/SkEgVeaSyY885IMeVR/ ShCU5jl9rck8n6/Fu2L7/QLtuNe/BylxrmxJrge0sm6x X-Google-Smtp-Source: AOwi7QBk+w6yd1VkSThXbt5/Ix5HwX1mVHqKV13ISDYTLwSvVBdsTg4O0SjWw6o+I3KrGn5eY3byJR5nzxnPYxJSZ2o= X-Received: by 10.223.163.155 with SMTP id l27mr17570718wrb.165.1505722617836; Mon, 18 Sep 2017 01:16:57 -0700 (PDT) MIME-Version: 1.0 Received: by 10.223.200.2 with HTTP; Mon, 18 Sep 2017 01:16:57 -0700 (PDT) In-Reply-To: References: <5319927a-872b-bf10-59a5-10b25b24343b@bothner.com> <12b97567-db76-4d6b-97a8-9da8a002883b@bothner.com> From: Sonny To Date: Mon, 18 Sep 2017 08:17:00 -0000 Message-ID: Subject: Re: using lambda to implement one method interface To: Per Bothner Cc: Kawa mailing list Content-Type: text/plain; charset="UTF-8" X-IsSubscribed: yes X-SW-Source: 2017-q3/txt/msg00062.txt.bz2 It seems implementing single method interface using lambda only works with methods and not in constructors? for example, this fails #|kawa:137|# (java.lang.Thread (lambda () (+ 1 1))) #|.....138|# /dev/stdin:137:1: warning - no possibly applicable method '/valueOf' in java.lang.Thread gnu.mapping.WrongArguments at gnu.mapping.MethodProc.matchFailAsException(MethodProc.java:136) at gnu.kawa.reflect.Invoke.applyToObject(Invoke.java:264) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at gnu.mapping.CallContext$ReflectMethodHandle.invokeExact(CallContext.java:726) at gnu.mapping.Procedure.applyToConsumerDefault(Procedure.java:75) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:497) at gnu.mapping.CallContext$ReflectMethodHandle.invokeExact(CallContext.java:726) at gnu.mapping.CallContext.runUntilDone(CallContext.java:586) at gnu.expr.ModuleExp.evalModule2(ModuleExp.java:342) at gnu.expr.ModuleExp.evalModule(ModuleExp.java:211) at kawa.Shell.run(Shell.java:283) at kawa.Shell.run(Shell.java:196) at kawa.Shell.run(Shell.java:183) at kawa.repl.processArgs(repl.java:714) at kawa.repl.main(repl.java:820) On Mon, Sep 18, 2017 at 9:35 AM, Sonny To wrote: > yes that was an error. copy and paste of testing code. how would I > implement an interface with multiple methods? > > > On Sun, Sep 17, 2017 at 11:02 PM Per Bothner wrote: >> >> On 09/17/2017 11:54 AM, Sonny To wrote: >> > this is a big problem for my use case... >> > >> > i wouldn't be able to do something like this on android at runtime >> > >> > (object (java.lang.Runnable) >> > ((run (a ::void))::void >> > (+ 1 1) >> > )) >> >> You can probably work around it with: >> >> (->java.lang.Runnable >> (lambda ()::void (set! i (+ i 1)))) >> >> BTW - I assume (a ::void) is just a typo. Kawa should probably complain >> about it. >> -- >> --Per Bothner >> per@bothner.com http://per.bothner.com/