  In this thesis we look into programming by example (PBE), which is about
finding a program mapping given inputs to given outputs. PBE has traditionally
seen a split between formal versus neural approaches, where formal approaches
typically involve deductive techniques such as SAT solvers and types, while the
neural approaches involve training on sample input-outputs with their
corresponding program, typically using sequence-based machine learning
techniques such as LSTMs [41]. As a result of this split, programming types had
yet to be used in neural program synthesis techniques.
  We propose a way to incorporate programming types into a neural program
synthesis approach for PBE. We introduce the Typed Neuro-Symbolic Program
Synthesis (TNSPS) method based on this idea, and test it in the functional
programming context to empirically verify type information may help improve
generalization in neural synthesizers on limited-size datasets.
  Our TNSPS model builds upon the existing Neuro-Symbolic Program Synthesis
(NSPS), a tree-based neural synthesizer combining info from input-output
examples plus the current program, by further exposing information on types of
those input-output examples, of the grammar production rules, as well as of the
hole that we wish to expand in the program.
  We further explain how we generated a dataset within our domain, which uses a
limited subset of Haskell as the synthesis language. Finally we discuss several
topics of interest that may help take these ideas further. For reproducibility,
we release our code publicly.
