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 mail2-relais-roc.national.inria.fr (mail2-relais-roc.national.inria.fr [192.134.164.83]) by sympa.inria.fr (Postfix) with ESMTPS id 453048179A for ; Mon, 8 Jul 2013 17:42:45 +0200 (CEST) Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of jun.furuse@gmail.com) identity=pra; client-ip=74.125.82.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jun.furuse@gmail.com"; x-sender="jun.furuse@gmail.com"; x-conformance=sidf_compatible Received-SPF: Pass (mail2-smtp-roc.national.inria.fr: domain of jun.furuse@gmail.com designates 74.125.82.170 as permitted sender) identity=mailfrom; client-ip=74.125.82.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jun.furuse@gmail.com"; x-sender="jun.furuse@gmail.com"; x-conformance=sidf_compatible; x-record-type="v=spf1" Received-SPF: None (mail2-smtp-roc.national.inria.fr: no sender authenticity information available from domain of postmaster@mail-we0-f170.google.com) identity=helo; client-ip=74.125.82.170; receiver=mail2-smtp-roc.national.inria.fr; envelope-from="jun.furuse@gmail.com"; x-sender="postmaster@mail-we0-f170.google.com"; x-conformance=sidf_compatible X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AukBAGPd2lFKfVKqjWdsb2JhbABagztNgwirdIk3iDGBCggWDgEBAQEHCwsJEgYkgiMBAQQBIwQZARsLEgEDAQsGBQsDCioCAiEBAREBBQEcBhOHfAEDCQYMm1WLfk+Cf4QcChknDViHcwEFDIx0gSOBRAQHglSBHAOJI4xJgWeBKYp6g0AWKYRELw X-IPAS-Result: AukBAGPd2lFKfVKqjWdsb2JhbABagztNgwirdIk3iDGBCggWDgEBAQEHCwsJEgYkgiMBAQQBIwQZARsLEgEDAQsGBQsDCioCAiEBAREBBQEcBhOHfAEDCQYMm1WLfk+Cf4QcChknDViHcwEFDIx0gSOBRAQHglSBHAOJI4xJgWeBKYp6g0AWKYRELw X-IronPort-AV: E=Sophos;i="4.87,1020,1363129200"; d="scan'208";a="25041190" Received: from mail-we0-f170.google.com ([74.125.82.170]) by mail2-smtp-roc.national.inria.fr with ESMTP/TLS/RC4-SHA; 08 Jul 2013 17:42:39 +0200 Received: by mail-we0-f170.google.com with SMTP id w57so3881589wes.1 for ; Mon, 08 Jul 2013 08:42:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=9+RFgt9LkK2phuA656E+RKgPkGVNvvmkJnk9DrB/WAE=; b=D8J3Vk86YGG/IiLG9OQhl2Ub3ACL68NgRz+BHsFyDOUyBpmVZxVLI3F8OcHkDsCg45 fyjUMOvtaPSsnU/dY0VAHC5zN6mvSPQ5jMjpTYL6g41am0QSr5g0PzP1zom6gggyEkHv 68f5FyFxZsDEHzW5l+KfL+HnkvYY4PXtTqrKzGI+DtsRC9pMTKdVN+QaBNsmsw7b2H0j X+jccbxQAH3OpjyvPH7lYBmmyRsFgvQJzE7rcFmVPtZST/kUD6i4dmO7SEt/cCLHDf10 PabdotOjNVIS0W96C476C9wBcy2DggZPltGxuAJvirBIR95pK/gnh4hQe6pKosVNKhKz URfA== MIME-Version: 1.0 X-Received: by 10.194.78.110 with SMTP id a14mr12625582wjx.84.1373298159396; Mon, 08 Jul 2013 08:42:39 -0700 (PDT) Received: by 10.194.136.140 with HTTP; Mon, 8 Jul 2013 08:42:39 -0700 (PDT) In-Reply-To: References: Date: Mon, 8 Jul 2013 23:42:39 +0800 Message-ID: From: Jun Furuse To: Yaron Minsky Cc: caml-list Content-Type: multipart/alternative; boundary=047d7bfcf01ef62f8c04e101e474 Subject: Re: [Caml-list] [ANN] OCamlOScope: a new OCaml API search --047d7bfcf01ef62f8c04e101e474 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable Hi Yaron, I have just updated it so that it expands manifest types. It is a dirty hack but "split : string -> char -> string list" lists up Core.Std.String.Escaping.split. There are still lots of things to do before it becomes as powerful as Hoogle is, but so far, I am working on its speed and size rather than search quality. Jun On Fri, Jul 5, 2013 at 11:25 AM, Yaron Minsky wrote: > 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 al= so >> 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 >> >> --047d7bfcf01ef62f8c04e101e474 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
Hi Yaron,

I have just updated it so tha= t it expands manifest types. It is a dirty hack but "split : string -&= gt; char -> string list" lists up Core.Std.String.Escaping.split.

There are still lots of things to do before it becomes = as powerful as Hoogle is, but so far, I am working on its speed and size ra= ther than search quality.

Jun


On Fri, Jul 5, 2013 at 11:25 AM, Yaron M= insky <yminsky@janestreet.com> wrote:

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@gma= il.com> wrote:
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


--047d7bfcf01ef62f8c04e101e474--