Simple Types for Polymorphic Functions
Pith reviewed 2026-05-10 16:19 UTC · model grok-4.3
The pith
Combinators each get one type whose polymorphism is revealed by application, supporting more than Hindley-Milner without quantified types.
A machine-rendered reading of the paper's core claim, the machinery that carries it, and where it could break.
Core claim
The type system assigns each combinator a single type that exactly describes the structure of its values. Abstract types such as list types and function types can hide this structure, but application reveals the polymorphic capabilities. Without using any quantified types, the system achieves polymorphism that surpasses the Hindley-Milner type system used in functional programming, and it comes with an effective type inference algorithm.
What carries the argument
Combinatory types that assign at most one type to each combinator and expose polymorphism through application.
Load-bearing premise
That assigning at most one type to each combinator is enough to capture and infer all the polymorphic behaviors needed for practical functional programming without quantified types or other extra mechanisms.
What would settle it
A concrete polymorphic combinator or program that the type inference algorithm cannot assign a single consistent type to, even though the program type-checks in Hindley-Milner or requires behaviors that a single type cannot cover.
Figures
read the original abstract
This paper introduces a simple type system for combinatory logic in which combinators have at most one type, whose polymorphism is revealed by application. The combinatory types exactly describe the structure of their values, which may be hidden by abstract types, such as list types and function types. Even without any quantified types, it supports polymorphism beyond that of the Hindley-Milner type system that underpins functional programming, and an effective type inference algorithm. Also, the simplicity of the formalism should make other static program analyses easier.
Editorial analysis
A structured set of objections, weighed in public.
Referee Report
Summary. The paper introduces a simple type system for combinatory logic in which each combinator receives at most one simple type (with type variables but no explicit quantifiers). Polymorphism arises exclusively through the application rule. The system is claimed to support polymorphism beyond Hindley-Milner, to admit an effective type-inference algorithm, and to simplify other static analyses because of its reduced formalism.
Significance. If the central results hold, the work supplies a streamlined alternative to quantified polymorphic type systems for combinatory logic. The demonstration that the type rules, inference algorithm and examples are internally consistent, that the system is expressively equivalent to a fragment of Hindley-Milner, and that the inference procedure is terminating and produces principal types constitute concrete strengths that support the practicality of the approach.
major comments (1)
- Abstract and §1: the assertion that the system supports 'polymorphism beyond that of the Hindley-Milner type system' sits in tension with the later claim (and proof sketch) of equivalence to a fragment of HM; the precise sense in which the new system is 'beyond' HM should be stated explicitly, e.g., by exhibiting a combinator whose principal type in the new system cannot be expressed in HM without additional mechanisms.
minor comments (3)
- §2.1, notation for type variables: the paper uses both Greek letters and Latin letters for type variables without a uniform convention; a single notational choice would improve readability.
- Figure 1 (type rules): the application rule is presented without an accompanying prose explanation of how the substitution is computed; a short paragraph clarifying the side condition would help readers unfamiliar with combinatory logic.
- §4, inference algorithm: the termination argument is sketched but not given a formal lemma number; numbering the key lemmas would make cross-references easier.
Simulated Author's Rebuttal
We thank the referee for the detailed and constructive report. The single major comment identifies a genuine point of potential confusion in our presentation of the relationship to Hindley-Milner, which we will resolve by tightening the wording and adding a concrete example.
read point-by-point responses
-
Referee: Abstract and §1: the assertion that the system supports 'polymorphism beyond that of the Hindley-Milner type system' sits in tension with the later claim (and proof sketch) of equivalence to a fragment of HM; the precise sense in which the new system is 'beyond' HM should be stated explicitly, e.g., by exhibiting a combinator whose principal type in the new system cannot be expressed in HM without additional mechanisms.
Authors: We agree that the current phrasing risks appearing contradictory and will revise both the abstract and §1. The system is expressively equivalent to a fragment of HM (as shown by the embedding and the principal-type theorem), but differs in mechanism: each combinator is given a single simple type possibly containing free type variables, and polymorphism is obtained solely by the application rule rather than by explicit universal quantifiers. This yields a strictly simpler formalism (no quantifiers, no type schemes) while still typing the same combinatory terms as the corresponding HM fragment. The sense in which the approach is 'beyond' HM is therefore that it realises the same polymorphism without quantified types or type schemes. In the revision we will add a short example (the S combinator) whose principal type in our system is a simple type with free variables; we will show that the corresponding HM type requires a quantifier and cannot be written as a simple type without additional mechanisms such as type schemes or implicit quantification. revision: yes
Circularity Check
No significant circularity; derivation is self-contained
full rationale
The paper presents original type rules for combinatory logic in which each combinator receives a single simple type (with type variables) and polymorphism arises solely from the application rule. These rules, the associated inference algorithm, and the claimed expressiveness results are defined directly from first principles without reducing to fitted parameters, self-referential definitions, or load-bearing self-citations. No step equates a derived result to its own input by construction, and the formalism is shown to be internally consistent on the presented terms.
Axiom & Free-Parameter Ledger
Reference graph
Works this paper leans on
-
[1]
S. Abramsky and C.L. Hankin, editors.Abstract Interpretation of Declarative Languages. Computers and their Applications. Ellis Horwood, 1987
work page 1987
-
[2]
Johannes Bader. Combinatory types.https://doi.org/10.5281/zenodo. 15338381
-
[3]
Cambridge University Press, 2013
Hendrik Pieter Barendregt, Wil Dekkers, and Richard Statman.Lambda calculus with types. Cambridge University Press, 2013
work page 2013
- [4]
-
[5]
North- Holland Amsterdam, 1972
Haskell Brooks Curry, Robert Feys, and William Craig.Combinatory Logic. North- Holland Amsterdam, 1972
work page 1972
-
[6]
Luis Damas and Robin Milner. Principal type-schemes for functional programs. InProceedings of the 9th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’82, page 207–212, New York, NY, USA, 1982. As- sociation for Computing Machinery.https://doi.org/10.1145/582153.582176
-
[7]
Tim Freeman and Frank Pfenning. Refinement types for ml. InProceedings of the ACM SIGPLAN 1991 conference on Programming language design and imple- mentation, pages 268–277, 1991
work page 1991
-
[8]
Semantic subtyping: Dealing set-theoretically with function, union, intersection, and negation types
Alain Frisch, Giuseppe Castagna, and V´ eronique Benzaken. Semantic subtyping: Dealing set-theoretically with function, union, intersection, and negation types. Journal of the ACM (JACM), 55(4):1–64, 2008
work page 2008
- [9]
-
[10]
A type-theoretic approach to higher-order modules with sharing
Robert Harper and Mark Lillibridge. A type-theoretic approach to higher-order modules with sharing. InProceedings of the 21st ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages, POPL ’94, page 123–137, New York, NY, USA, 1994. Association for Computing Machinery.https: //doi.org/10.1145/174675.176927
-
[11]
Recursive programs in normal form (short paper)
Barry Jay. Recursive programs in normal form (short paper). InProceedings of the ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation, PEPM ’18, pages 67–73. ACM, 2018
work page 2018
-
[12]
Barry Jay.Reflective Programs in Tree Calculus. 2021. including an ap- pendix with Jose Vergara. URL:https://github.com/barry-jay-personal/ tree-calculus
work page 2021
-
[13]
Combinatory types: repository of proofs in Rocq, 2025
Barry Jay. Combinatory types: repository of proofs in Rocq, 2025. URL:https: //github.com/barry-jay-personal/combinatory-types
work page 2025
-
[14]
Typed program analysis without encodings
Barry Jay. Typed program analysis without encodings. InProceedings of the 2025 ACM SIGPLAN International Workshop on Partial Evaluation and Program Manipulation, PEPM ’25, page 54–65, New York, NY, USA, 2025. Association for Computing Machinery.https://doi.org/10.1145/3704253.3706138
-
[15]
R. Milner. A theory of type polymorphism in programming.Journal of Computer and Systems Sciences, 17:348–375, 1978
work page 1978
-
[16]
The octagon abstract domain.Higher-order and symbolic compu- tation, 19:31–100, 2006
Antoine Min´ e. The octagon abstract domain.Higher-order and symbolic compu- tation, 19:31–100, 2006. 24
work page 2006
-
[17]
Patrick M Rondon, Ming Kawaguci, and Ranjit Jhala. Liquid types. InProceedings of the 29th ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 159–169, 2008
work page 2008
-
[18]
Moses Sch¨ onfinkel.¨Uber die bausteine der mathematischen logik.Mathematische Annalen, 92:305–316, 1924
work page 1924
-
[19]
Alejandro Serrano, Jurriaan Hage, Simon Peyton Jones, and Dimitrios Vytiniotis. A quick look at impredicativity.Proc. ACM Program. Lang., 4(ICFP), August 2020.https://doi.org/10.1145/3408971
-
[20]
Svf: interprocedural static value-flow analysis in llvm
Yulei Sui and Jingling Xue. Svf: interprocedural static value-flow analysis in llvm. InProceedings of the 25th international conference on compiler construction, pages 265–266, 2016
work page 2016
-
[21]
J B. Wells. Typability and type checking in the second-orderλ-calculus are equiv- alent and undecidable. InProceedings, Ninth Annual IEEE Symposium on Logic in Computer Science. IEEE Computer Society Press, 1994. 25
work page 1994
discussion (0)
Sign in with ORCID, Apple, or X to comment. Anyone can read and Pith papers without signing in.