TABLE OF CONTENTS


Definitions

Known Limitations and Issues

Opening Windows Terminal from the REPL Button

Global Find/Replace

Arity Limitation

Unusual String Appears in REPL When First Opened

Helpful References and Resources



Definitions


Argument - A value passed to a function (aka Lambda) that is intended as input to the function. Some languages call these parameters, but we use “argument” to avoid confusion with the Scheme specific term “Parameter.”


Arity -  “Arity” just means “how many parameters a function accepts.” Options are: zero, some fixed number, some fixed number plus any number of optional parameters, and, finally, zero or more parameters (not limited to a specific number).


Form - refers to identifiers associated with lambda or macro definitions in Scheme and other Lisp languages.


Lambda - A value denoting a function that takes input, and optionally returns an output. Lambdas can have names, in which case we call them “forms,” or not, in which case they are considered “anonymous.” 


Macro - A “syntax extension” to the Scheme language that transforms an S-expression into a new S-Expression, which is then evaluated at runtime. In other words, it operates at compile time to generate a new S-expression from the S-expression that is input to it, for the express purpose of building new language features into the core.


Parameter - A Scheme-specific term referring to a kind of dynamic variable, designed to be used in a safe way in multiple lexical scopes.


Syntax Extension - Scheme’s preferred term for what Lispers refer to as “macros.” Scheme also supports Lisp’s traditional macro concept, but differentiates syntax extensions as macros that take extra care to ensure “hygiene,” which means that using Scheme’s official “syntax extension” forms, a programmer is guaranteed not to capture definitions from a macro’s outer context accidentally.


Turing Complete - refers to a test of a programming language that determines whether or not it can completely model all the operations of an “abstract Turing machine.” The advantage of “Turing complete” languages is that they can be used for general-purpose programming—that is, they can be used to build practically anything a computer can theoretically do.



Known Limitations and Issues


Opening Windows Terminal from the REPL Button


We have performed extensive testing of AcceλerateTM for Microsoft 365, and are confident with the integrity of our product and code.  However, during our testing we have experienced where, while attempting to access the ADB REPL via the Windows Terminal command line, antivirus software quarantined the file.  Note that this did not happen while using either the REPL pane within Excel or the Open ADB REPL in Windows Terminal options.  It has only happened when calling the ADB REPL from a Windows Terminal command line directly. We have determined this to be a false positive.  You may experience a similar situation, as it is a common problem in software development on Microsoft Windows. 


We endeavor to make sure we never produce products with viruses in them.  We also recognize that viruses can be acquired post installation as well. If you get warnings from your antivirus software about any particular feature or function of Acceλerate for Microsoft 365, or any of our products, please let us know. It could be a false positive requiring you to set up an exclusion policy. 


Global Find/Replace


Our testing has discovered that there is a potential that “batch” modifying formulas in a spreadsheet may not work properly when using the Excel Global Find/Replace utility. Specifically, trying to modify formulas with global search/replace is very tricky, and can result in Excel crashing if there is an error in your regular expression or matching criteria. This is not anything to do with our functions, and can happen even if your goal is to replace a built-in function invocation with another. If you ever find yourself tempted to use the Excel Global Find/Replace utility to update something about your workbook that involves one of our functions, please consult with us first. If it’s a migration issue with code related to our functions, we can most likely provide a utility to help with this kind of global update to our functions with each new release.


Arity Limitation


Excel’s XLL API limits the number of arity expressions you can use in a formula to 60. While this is a limitation set by Excel’s XLL API, this limitation should not cause an issue. Most functions you write in Scheme will only ever need a small handful of fixed parameters, and variadic functions in Acceλerate can take in ranges with a vastly greater number of values than 60 - basically, whatever you can fit in a row or a column in an Excel spreadsheet. 


Unusual String Appears in REPL When First Opened


When you open the REPL pane for the first time after installation or update, you may encounter a short string of the number “2”.  This is entirely a cosmetic and harmless bug and should disappear after closing Excel and restarting it, or by clearing the REPL.  We will evaluate this bug further as part of our planned updates to Acceλerate for Microsoft 365.  



Helpful References and Resources


In developing this project we found the following books and references on Scheme provided custom scripts which we tested with AcceλerateTM for Microsoft 365.  We recommend these materials as a reference for working on advanced solutions with Acceλerate for Microsoft 365.


Friedman, D., The Seasoned SchemerSecond Edition. (The MIT Press, 1995)


Friedman, D., The Reasoned Schemer, Second Edition. (The MIT Press, 1998)


Friedman, D., The Little Schemer, Fourth Edition, (The MIT Press, 1995)


Dybvig, R.K., The Scheme Programming Language, Fourth Edition, (The MIT Press, 2009)


Sussman, G.J. and Wisdom, J., Structure and Interpretation of Classical MechanicsSecond 

Edition, (Massachusetts Institute of Technology, 2014)


Sussman, G.J. and Wisdom, J., Structure and Interpretation of Computer Programs, Second Edition, (Massachusetts Institute of Technology, 1996)


Sussman, G.J. and Wisdom, J., Functional Differential Geometry(Massachusetts Institute of Technology, 2013)


Hanson, C. and Sussman, G.J., Software Design for Flexibility - How to Avoid Programming Yourself into a Corner, (Massachusetts Institute of Technology, 2021)




The following terms are registered trademarks of the Microsoft group of companies and are used in accordance with Microsoft’s Trade and Brand Guidelines: Microsoft, Microsoft 365, Microsoft Office, Microsoft Excel, Microsoft Edge, Microsoft Edge WebView2, Microsoft Windows, Excel, Office 365


Copyright © 2022.  Apex Data Solutions, LLC. All Rights Reserved.