Filters








152 Hits in 2.1 sec

Extensible Pattern Matching in an Extensible Language [article]

Sam Tobin-Hochstadt
2011 arXiv   pre-print
Pattern matching is a widely used technique in functional languages, especially those in the ML and Haskell traditions, where it is at the core of the semantics. In languages in the Lisp tradition, in contrast, pattern matching it typically provided by libraries built with macros. We present match, a sophisticated pattern matcher for Racket, implemented as language extension. using macros. The system supports novel and widely-useful pattern-matching forms, and is itself extensible. The
more » ... lity of match is implemented via a general technique for creating extensible language extensions.
arXiv:1106.2578v1 fatcat:apnmf6cvorghvksbptmpw4go2e

Semantic Solutions to Program Analysis Problems [article]

Sam Tobin-Hochstadt, David Van Horn
2011 arXiv   pre-print
Problems in program analysis can be solved by developing novel program semantics and deriving abstractions conventionally. For over thirty years, higher-order program analysis has been sold as a hard problem. Its solutions have required ingenuity and complex models of approximation. We claim that this difficulty is due to premature focus on abstraction and propose a new approach that emphasizes semantics. Its simplicity enables new analyses that are beyond the current state of the art.
arXiv:1105.0106v1 fatcat:z3athpd4dzcqhbnavmnwqfi7oq

Practical Optional Types for Clojure [article]

Ambrose Bonnaire-Sergeant, Rowan Davies, Sam Tobin-Hochstadt
2018 arXiv   pre-print
Metatheory We prove type soundness following Tobin-Hochstadt and Felleisen [24] .  ...  . ⊢ τ <: σi Typing judgment We formalize our system following Tobin-Hochstadt and Felleisen [24] .  ... 
arXiv:1812.03571v1 fatcat:tn43m5elffdgfchlvrhrw2krcq

Build Scripts with Perfect Dependencies [article]

Sarah Spall and Neil Mitchell and Sam Tobin-Hochstadt
2020 arXiv   pre-print
We cannot determine at which point during the execution these les were accessed, nor which order they were accessed in. 1:4 Sarah Spall, Neil Mitchell, and Sam Tobin-Hochstadt We cannot prevent or  ... 
arXiv:2007.12737v1 fatcat:lndgdlf75jdjnbsfwrjp2oe66e

Optimization coaching

Vincent St-Amour, Sam Tobin-Hochstadt, Matthias Felleisen
2012 SIGPLAN notices  
The first, for Typed Racket (Tobin-Hochstadt et al. 2011) , handles various local type-driven code specialization optimizations.  ...  The Typed Racket Compiler The Typed Racket compiler is a research compiler that compiles Typed Racket programs to Racket programs (Tobin-Hochstadt et al. 2011) .  ... 
doi:10.1145/2398857.2384629 fatcat:hjtjnzit6nhu7ispxocfbiqwny

Logical types for untyped languages

Sam Tobin-Hochstadt, Matthias Felleisen
2010 SIGPLAN notices  
" We exploited this insight for the development of Typed Scheme, a typed sister language for Racket (formerly PLT Scheme) [Tobin-Hochstadt and Felleisen 2008 ].  ... 
doi:10.1145/1932681.1863561 fatcat:iw2skh53yvanfmuxo7sua4ek7e

Type checking extracted methods [article]

Yuquan Fu, Sam Tobin-Hochstadt
2021 arXiv   pre-print
The last rule in the valid typing derivation is T-IF: e " pif e 1 e 2 e 3 q, ψ`" ψ 2`_ ψ 3`, ψ´" ψ 2´_ ψ 3´4 0 Yuquan Fu and Sam Tobin-Hochstadt By inversion, we know By IH on ρ $ e 1 ó v 1 and Γ $ e 1  ... 
arXiv:2010.03608v2 fatcat:7tiefl7ma5g7hju4nmcu5vtscm

Chaperones and impersonators

T. Stephen Strickland, Sam Tobin-Hochstadt, Robert Bruce Findler, Matthew Flatt
2012 SIGPLAN notices  
This improvement directly benefits Racket programmers, and it benefits language extensions that are further layered on the contract system-notably Typed Racket (Tobin-Hochstadt and Felleisen 2008) , whose  ... 
doi:10.1145/2398857.2384685 fatcat:kvx3lkjfcfcwnh6kftxdbuc7uu

Languages as libraries

Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, Matthias Felleisen
2012 SIGPLAN notices  
Typed Racket (Tobin-Hochstadt and Felleisen 2008 ) is a statically typed sister language of Racket that is designed to support the gradual porting of untyped programs.  ...  To protect these invariants, we automatically generate run-time contracts from the types of imported and exported bindings (Tobin-Hochstadt and Felleisen 2006) .  ... 
doi:10.1145/2345156.1993514 fatcat:pgpdl5warbag5dcmqmp3sx3ig4

Higher-order symbolic execution via contracts

Sam Tobin-Hochstadt, David Van Horn
2012 SIGPLAN notices  
We present a new approach to automated reasoning about higher-order programs by extending symbolic execution to use behavioral contracts as symbolic values, enabling symbolic approximation of higher-order behavior. Our approach is based on the idea of an abstract reduction semantics that gives an operational semantics to programs with both concrete and symbolic components. Symbolic components are approximated by their contract and our semantics gives an operational interpretation of
more » ... values. The result is a executable semantics that soundly predicts program behavior, including contract failures, for all possible instantiations of symbolic components. We show that our approach scales to an expressive language of contracts including arbitrary programs embedded as predicates, dependent function contracts, and recursive contracts. Supporting this feature-rich language of specifications leads to powerful symbolic reasoning using existing program assertions. We then apply our approach to produce a verifier for contract correctness of components, including a sound and computable approximation to our semantics that facilitates fully automated contract verification. Our implementation is capable of verifying contracts expressed in existing programs, and of justifying valuable contract-elimination optimizations.
doi:10.1145/2398857.2384655 fatcat:yvyqxycx7bh75pfavpzubwqff4

Languages as libraries

Sam Tobin-Hochstadt, Vincent St-Amour, Ryan Culpepper, Matthew Flatt, Matthias Felleisen
2011 SIGPLAN notices  
Typed Racket (Tobin-Hochstadt and Felleisen 2008 ) is a statically typed sister language of Racket that is designed to support the gradual porting of untyped programs.  ...  To protect these invariants, we automatically generate run-time contracts from the types of imported and exported bindings (Tobin-Hochstadt and Felleisen 2006) .  ... 
doi:10.1145/1993316.1993514 fatcat:t2jupfrfkvejtggmxbqixgz4sq

The design and implementation of typed scheme

Sam Tobin-Hochstadt, Matthias Felleisen
2008 SIGPLAN notices  
This is analogous to our earlier work on Typed Scheme (Tobin-Hochstadt and , which provides such a soundness theorem, which we believe scales to full Typed Scheme and PLT Scheme.  ... 
doi:10.1145/1328897.1328486 fatcat:g6mwd2ercveoxordpumn2rjjk4

Practical Variable-Arity Polymorphism [chapter]

T. Stephen Strickland, Sam Tobin-Hochstadt, Matthias Felleisen
2009 Lecture Notes in Computer Science  
Types for Variable-Arity Functions For the past two years, Tobin-Hochstadt and Felleisen [1, 2] have been developing Typed Scheme, an explicitly and statically typed sister language of PLT Scheme [3  ... 
doi:10.1007/978-3-642-00590-9_3 fatcat:gibgrtzcq5hi5gypkao645r7vi

The Design and Implementation of Typed Scheme: From Scripts to Programs [article]

Sam Tobin-Hochstadt, Matthias Felleisen
2011 arXiv   pre-print
This is analogous to our earlier work on Typed Scheme (Tobin-Hochstadt and , which provides such a soundness theorem, which we believe scales to full Typed Scheme and PLT Scheme.  ... 
arXiv:1106.2575v1 fatcat:b5lt75ruerfpfdyjbpsxebevoy

Sham: A DSL for Fast DSLs [article]

Rajan Walia, Chung-chieh Shan, Sam Tobin-Hochstadt
2020 arXiv   pre-print
Domain-specific languages (DSLs) are touted as both easy to embed in programs and easy to optimize. Yet these goals are often in tension. Embedded or internal DSLs fit naturally with a host language, while inheriting the host's performance characteristics. External DSLs can use external optimizers and languages but sit apart from the host. We present Sham, a toolkit designed to enable internal DSLs with high performance. Sham is itself a DSL embedded in Racket, but compiles transparently to
more » ... at runtime. Sham is designed to be well suited as both a compilation target for other DSLs embedded in Racket as well as a language for transparently replacing DSL support code with faster versions. Sham programs interoperate seamlessly with Racket programs, and so no additional effort is required to use a DSL implemented with Sham. Finally, Sham comes with a framework for defining DSL compilers and transformations, which is also used in the implementation of Sham itself. We validate Sham's design on a series of case studies, ranging from Krishnamurthi's classic automata DSL to a sound synthesis DSL and a probabilistic programming language. All of these are existing DSLs where we replaced the backend using Sham, resulting in major performance gains.
arXiv:2005.09028v1 fatcat:aflh3wwfhrg6llehus5ymbshxa
« Previous Showing results 1 — 15 out of 152 results