From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Original-To: caml-list@sympa.inria.fr Delivered-To: caml-list@sympa.inria.fr Received: from mail3-relais-sop.national.inria.fr (mail3-relais-sop.national.inria.fr [192.134.164.104]) by sympa.inria.fr (Postfix) with ESMTPS id D2EF781792 for ; Fri, 5 Jul 2013 05:25:47 +0200 (CEST) Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of yminsky@janestreet.com) identity=pra; client-ip=38.105.200.229; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail3-smtp-sop.national.inria.fr: domain of yminsky@janestreet.com designates 38.105.200.229 as permitted sender) identity=mailfrom; client-ip=38.105.200.229; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="yminsky@janestreet.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail3-smtp-sop.national.inria.fr: no sender authenticity information available from domain of postmaster@tot-dmz-mxout1.janestreet.com) identity=helo; client-ip=38.105.200.229; receiver=mail3-smtp-sop.national.inria.fr; envelope-from="yminsky@janestreet.com"; x-sender="postmaster@tot-dmz-mxout1.janestreet.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AmIBAHc71lEmacjlnGdsb2JhbABagztJgwirSYk2iDJ5Hg4BAQEBAQYWCTyCIwEBBAEjBBkBASUSAQQLCwQHNwICIQESAQUBHAYTh30DCQYDCZwmiwtzg04BBYRRDYhLBo0AgSOBRAQHglGBHIkgjEWBZ4EpineDQBYphDo X-IPAS-Result: AmIBAHc71lEmacjlnGdsb2JhbABagztJgwirSYk2iDJ5Hg4BAQEBAQYWCTyCIwEBBAEjBBkBASUSAQQLCwQHNwICIQESAQUBHAYTh30DCQYDCZwmiwtzg04BBYRRDYhLBo0AgSOBRAQHglGBHIkgjEWBZ4EpineDQBYphDo X-IronPort-AV: E=Sophos;i="4.87,999,1363129200"; d="scan'208";a="20070327" Received: from mx5.janestreet.com (HELO tot-dmz-mxout1.janestreet.com) ([38.105.200.229]) by mail3-smtp-sop.national.inria.fr with ESMTP/TLS/DHE-RSA-AES256-SHA; 05 Jul 2013 05:25:46 +0200 Received: from tot-oib-smtp1.delacy.com ([172.27.22.15] helo=tot-smtp) by tot-dmz-mxout1.janestreet.com with esmtp (Exim 4.76) (envelope-from ) id 1UuweV-0005Zb-AD for caml-list@inria.fr; Thu, 04 Jul 2013 23:25:43 -0400 Received: from tot-dmz-mxgoog1.delacy.com ([172.27.224.14] helo=mxgoog2.janestreet.com) by tot-smtp with esmtps (TLSv1:AES256-SHA:256) (Exim 4.72) (envelope-from ) id 1UuweV-0004Hx-9J for caml-list@inria.fr; Thu, 04 Jul 2013 23:25:43 -0400 Received: from mail-ea0-f176.google.com ([209.85.215.176]) by mxgoog2.janestreet.com with esmtp (Exim 4.76) (envelope-from ) id 1UuweV-0004Av-5E for caml-list@inria.fr; Thu, 04 Jul 2013 23:25:43 -0400 Received: by mail-ea0-f176.google.com with SMTP id z15so1164410ead.7 for ; Thu, 04 Jul 2013 20:25:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=janestreet.com; s=google; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=ST/0R90gRCTxMlvn4vsiKYo+IOtUkVSXE6NN7Qm/5ZE=; b=gYKV0hNHY+dNot8ip1qZE6apCX33yGNOOhQ87adsntKK+YiIHPvd9T1FIYU4Se62cZ USnSP87oLMztSuQIkLZVl9ijS5gfYnNuWh/uLjWG+A++CZ8xv/bOLN6TeXe7i12ZcsYx g+4KjauhVnv8ubPvkMYd49ihJNsqhp2YyUMyQ= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type:x-gm-message-state; bh=ST/0R90gRCTxMlvn4vsiKYo+IOtUkVSXE6NN7Qm/5ZE=; b=RmHZx+HI/EzhKsaVSwCcEd9+nROlzWgnR5RDCYCyxQPYzw/APZpIVW4bFU3c6jeR2z vIq32kguHK+56o0tqcZL3IwNjqE46dEA/w4slaq2lNQxr+4ZLffkcCyc1UgcxchbYClz AWQFgSSO05OF7kJWr1lTgfuPTkkOG+19+HPs3xO8fHsBLz30/N1ztW4WgbvRLskDf/3a 5gcvYkLKQPaLH7WV82PYuQ681yGXJ8Uqyl9pnAva+jYGYbqJe13OGFNJ88A80lkagwXW NkUN9Ki0auD3cp8qx0dwp8wjNvRWQ8s73lAUW/sQLS4mNy/3WOOA8rIL1Gz9DKyPnpzk BSEQ== X-Received: by 10.14.175.5 with SMTP id y5mr9902032eel.21.1372994742583; Thu, 04 Jul 2013 20:25:42 -0700 (PDT) MIME-Version: 1.0 X-Received: by 10.14.175.5 with SMTP id y5mr9902021eel.21.1372994742467; Thu, 04 Jul 2013 20:25:42 -0700 (PDT) Received: by 10.223.43.65 with HTTP; Thu, 4 Jul 2013 20:25:41 -0700 (PDT) Received: by 10.223.43.65 with HTTP; Thu, 4 Jul 2013 20:25:41 -0700 (PDT) In-Reply-To: References: Date: Fri, 5 Jul 2013 06:25:41 +0300 Message-ID: From: Yaron Minsky To: Jun Furuse Cc: caml-list Content-Type: multipart/alternative; boundary=089e01160dbee77df404e0bb3f75 X-Gm-Message-State: ALoCoQkHOJjNZFyj09Y+frSePLtolY1O/s3UvlbbHqVyctppAVbaY8dXlDGUGXgel5JlFbD8H0HHwArya10MwiFpz5AynLCFpcJrLtspwTRBU8Ywhi4bS0zftkwnEzkH8Tbk3fBopMKthl9Y0JKT9c8nuhlRCZUkhA== Subject: Re: [Caml-list] [ANN] OCamlOScope: a new OCaml API search --089e01160dbee77df404e0bb3f75 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Neat! I played with it for a bit, and the main issue it saw with it is the trickiness around type names for things like string. For example, to find core or batteries' string split function, you need to search for t -> char -> t list Rather than string -> char -> string list Which finds ocplib's equivalent, and the Core.Std.String.Escaping version as well. Fill on unification doesn't seem ideal, but I wonder if some ability to recognize equivalent type names can be done without full-on search time unification. On Jul 5, 2013 5:12 AM, "Jun Furuse" wrote: > Hi list, > > I have launched a new OCaml API search, OCaml=E2=97=8EScope at > http://ocamloscope.herokuapp.com . > > OCaml=E2=97=8EScope is a type directed library search, derived work from = OCaml API > Search by Mizuno and its ancestor OCamlBrowser by Garrigue. It is also > inspired from Hoogle, the same API search engine for Haskell by MItchell, > which I regularly use in my Haskell :-) job. > > * Fast and Portable. It loads everything in memory, unlike OCaml API > Search and OCamlBrowser which load compiled interface files (*.cmi) > dynamically. The data file is extracted from compiled files but > self-contained, so the search engine does not require to compile the > libraries locally. > * No use of unification but edit distance of types like Hoogle. > Unification does not provide good results in type directed search, and is > costy. > * OCamlFind and OPAM friendly. OCaml=E2=97=8EScope knows which items are = from > which OCamlFind and OPAM packages. > * OCamlDoc: it also extracts OCamlDoc comments, if possible. > * Small: it can even run as a heroku app. Currently it carries 245k > entries from 76 OCamlFind packages including Core and Batteries, but the > data file (as a marshalled OCaml value) is still 20Mb. > > There are lots of todos but I think the search results look well sane so > far. If you find something strange please drop by > https://bitbucket.org/camlspotter/ocamloscope-server/issues?status=3Dnew&= status=3Dopen and > leave some comments. Thanks! > > Jun Furuse > > --089e01160dbee77df404e0bb3f75 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable

Neat!

I played with it for a bit, and the main issue it saw with i= t is the trickiness around type names for things like string.=C2=A0 For exa= mple, to find core or batteries' string split function, you need to sea= rch for

t -> char -> t list

Rather than

string -> char -> string list

Which finds ocplib's equivalent, and the Core.Std.String= .Escaping version as well.

Fill on unification doesn't seem ideal, but I wonder if = some ability to recognize equivalent type names can be done without full-on= search time unification.

On Jul 5, 2013 5:12 AM, "Jun Furuse" &= lt;jun.furuse@gmail.com> wro= te:
Hi list,

I have launched a new OCaml AP= I search, OCaml=E2=97=8EScope at http://ocamloscope.herokuapp.com .

<= /div>
OCaml=E2=97=8EScope is a type directed library search, derived work from OC= aml API Search by Mizuno and its ancestor OCamlBrowser by Garrigue. It is a= lso inspired from Hoogle, the same API search engine for Haskell by MItchel= l, which I regularly use in my Haskell :-) job.

* Fast and Portable. It loads everything in memory, unl= ike OCaml API Search and OCamlBrowser which load compiled interface files (= *.cmi) dynamically. The data file is extracted from compiled files but self= -contained, so the search engine does not require to compile the libraries = locally.
* No use of unification but edit distance of types like Hoogle. Unific= ation does not provide good results in type directed search, and is costy.<= br>
* OCamlFind and OPAM friendly. OCaml=E2=97=8EScope knows whic= h items are from which OCamlFind and OPAM packages.
* OCamlDoc: it also extracts OCamlDoc comments, if possible.
* Small: it can even run as a heroku app. Currently it carries 245k entrie= s from 76 OCamlFind packages including Core and Batteries, but the data fil= e (as a marshalled OCaml value) is still 20Mb.

There are lots of todos but I think the search results = look well sane so far. If you find something strange please drop by=C2=A0https://bitbucket.org/camlspott= er/ocamloscope-server/issues?status=3Dnew&status=3Dopen=C2=A0and le= ave some comments. Thanks!

Jun Furuse

--089e01160dbee77df404e0bb3f75--