Moogle: a type-based API search engine for Elm

Ouyang, Junpeng (2019). Moogle: a type-based API search engine for Elm. Thesis (Master thesis), E.T.S. de Ingenieros Informáticos (UPM).


Title: Moogle: a type-based API search engine for Elm
  • Ouyang, Junpeng
Item Type: Thesis (Master thesis)
Masters title: Ingeniería del Software
Date: June 2019
Faculty: E.T.S. de Ingenieros Informáticos (UPM)
Department: Lenguajes y Sistemas Informáticos e Ingeniería del Software
Creative Commons Licenses: Recognition - No derivative works - Non commercial

Full text

[thumbnail of TFM_JUNPENG_OUYANG.pdf]
PDF - Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (993kB) | Preview


Searching for code is, in general, a hard problem, as text is not commonly representative of what a program does. In this thesis, we present Moogle, a type-based API search engine for Elm, a functional programming language designed for web development. In Moogle, search queries are based on names or type signatures, whose adequate information can be leveraged for matching APIs from third-party libraries so that developers are able to discover and reuse existing functions without reconstructing a similar one. The key concept behind Moogle is the unification algorithm, where generic type signatures can be matched to concrete ones and vice versa. In order to optimize the performance for applying unification matches, Moogle stores the information of signatures in Neo4j, a graph DBMS that provides graph-based queries in its own query DSL, Cypher. Moogle also has its implementation on a parser to convert the signature of types into abstract syntax tree data models, and search string from users into Cypher queries. The signature of APIs in Neo4j are first selected by generated queries then finally filtered by unification module, the results of which can be categorized into two sets: the candidate set and the full match set, where all items will be ranked and shown in the user-interface. After development phase, we built and deployed our software with an online version based on Docker image.1 According to our test, Moogle outperforms its congeneric work, Elm-search, on many aspects including search range, allowed patterns and ranking metrics with an acceptable trade-off on performance.

More information

Item ID: 56373
DC Identifier:
OAI Identifier:
Deposited by: Biblioteca Facultad de Informatica
Deposited on: 10 Sep 2019 11:05
Last Modified: 10 Sep 2019 11:05
  • Logo InvestigaM (UPM)
  • Logo GEOUP4
  • Logo Open Access
  • Open Access
  • Logo Sherpa/Romeo
    Check whether the anglo-saxon journal in which you have published an article allows you to also publish it under open access.
  • Logo Dulcinea
    Check whether the spanish journal in which you have published an article allows you to also publish it under open access.
  • Logo de Recolecta
  • Logo del Observatorio I+D+i UPM
  • Logo de OpenCourseWare UPM