GNU Emacs Lisp Reference Manual Volume 2 for Emacs Version 24.1 Revision 3.1, May 2012

Total Page:16

File Type:pdf, Size:1020Kb

GNU Emacs Lisp Reference Manual Volume 2 for Emacs Version 24.1 Revision 3.1, May 2012 GNU Emacs Lisp Reference Manual Volume 2 For Emacs Version 24.1 Revision 3.1, May 2012 by Bil Lewis, Dan LaLiberte, Richard Stallman, the GNU Manual Group, et al. This is edition 3.1 of the GNU Emacs Lisp Reference Manual, corresponding to Emacs version 24.1. Copyright c 1990-1996, 1998-2012 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with the Invariant Sections being \GNU General Public License," with the Front-Cover texts being \A GNU Manual," and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled \GNU Free Documentation License." (a) The FSF's Back-Cover Text is: \You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom." Published by the Free Software Foundation 51 Franklin St, Fifth Floor Boston, MA 02110-1301 USA ISBN 1-882114-74-4 Cover art by Etienne Suvasa. i Short Contents Volume 1 1 Introduction :::::::::::::::::::::::::::::::::::::::: I:1 2 Lisp Data Types ::::::::::::::::::::::::::::::::::::: I:8 3 Numbers :::::::::::::::::::::::::::::::::::::::::: I:33 4 Strings and Characters::::::::::::::::::::::::::::::: I:48 5 Lists ::::::::::::::::::::::::::::::::::::::::::::: I:64 6 Sequences, Arrays, and Vectors :::::::::::::::::::::::: I:86 7 Hash Tables ::::::::::::::::::::::::::::::::::::::: I:97 8 Symbols:::::::::::::::::::::::::::::::::::::::::: I:102 9 Evaluation :::::::::::::::::::::::::::::::::::::::: I:110 10 Control Structures ::::::::::::::::::::::::::::::::: I:120 11 Variables ::::::::::::::::::::::::::::::::::::::::: I:137 12 Functions :::::::::::::::::::::::::::::::::::::::: I:163 13 Macros::::::::::::::::::::::::::::::::::::::::::: I:181 14 Customization Settings ::::::::::::::::::::::::::::: I:190 15 Loading :::::::::::::::::::::::::::::::::::::::::: I:209 16 Byte Compilation :::::::::::::::::::::::::::::::::: I:223 17 Advising Emacs Lisp Functions ::::::::::::::::::::::: I:233 18 Debugging Lisp Programs ::::::::::::::::::::::::::: I:243 19 Reading and Printing Lisp Objects :::::::::::::::::::: I:274 20 Minibuffers ::::::::::::::::::::::::::::::::::::::: I:284 21 Command Loop ::::::::::::::::::::::::::::::::::: I:315 22 Keymaps ::::::::::::::::::::::::::::::::::::::::: I:360 23 Major and Minor Modes :::::::::::::::::::::::::::: I:396 24 Documentation :::::::::::::::::::::::::::::::::::: I:451 25 Files::::::::::::::::::::::::::::::::::::::::::::: I:461 26 Backups and Auto-Saving ::::::::::::::::::::::::::: I:502 Index:::::::::::::::::::::::::::::::::::::::::::::::: I:512 ii Volume 2 27 Buffers :::::::::::::::::::::::::::::::::::::::::::::: 1 28 Windows ::::::::::::::::::::::::::::::::::::::::::: 18 29 Frames ::::::::::::::::::::::::::::::::::::::::::::: 66 30 Positions ::::::::::::::::::::::::::::::::::::::::::: 99 31 Markers ::::::::::::::::::::::::::::::::::::::::::: 112 32 Text :::::::::::::::::::::::::::::::::::::::::::::: 122 33 Non-ASCII Characters ::::::::::::::::::::::::::::::: 182 34 Searching and Matching :::::::::::::::::::::::::::::: 209 35 Syntax Tables :::::::::::::::::::::::::::::::::::::: 234 36 Abbrevs and Abbrev Expansion:::::::::::::::::::::::: 250 37 Processes :::::::::::::::::::::::::::::::::::::::::: 257 38 Emacs Display:::::::::::::::::::::::::::::::::::::: 299 39 Operating System Interface ::::::::::::::::::::::::::: 386 40 Preparing Lisp code for distribution :::::::::::::::::::: 418 A Emacs 23 Antinews :::::::::::::::::::::::::::::::::: 423 B GNU Free Documentation License :::::::::::::::::::::: 425 C GNU General Public License :::::::::::::::::::::::::: 433 D Tips and Conventions :::::::::::::::::::::::::::::::: 444 E GNU Emacs Internals :::::::::::::::::::::::::::::::: 457 F Standard Errors :::::::::::::::::::::::::::::::::::: 477 G Standard Keymaps :::::::::::::::::::::::::::::::::: 481 H Standard Hooks :::::::::::::::::::::::::::::::::::: 484 Index ::::::::::::::::::::::::::::::::::::::::::::::::: 488 iii Table of Contents Volume 1 1 Introduction ::::::::::::::::::::::::::::::::::: I:1 1.1 Caveats::::::::::::::::::::::::::::::::::::::::::::::::::::::: I:1 1.2 Lisp History :::::::::::::::::::::::::::::::::::::::::::::::::: I:1 1.3 Conventions :::::::::::::::::::::::::::::::::::::::::::::::::: I:2 1.3.1 Some Terms ::::::::::::::::::::::::::::::::::::::::::::: I:2 1.3.2 nil and t:::::::::::::::::::::::::::::::::::::::::::::::: I:2 1.3.3 Evaluation Notation ::::::::::::::::::::::::::::::::::::: I:3 1.3.4 Printing Notation :::::::::::::::::::::::::::::::::::::::: I:3 1.3.5 Error Messages :::::::::::::::::::::::::::::::::::::::::: I:3 1.3.6 Buffer Text Notation::::::::::::::::::::::::::::::::::::: I:4 1.3.7 Format of Descriptions ::::::::::::::::::::::::::::::::::: I:4 1.3.7.1 A Sample Function Description:::::::::::::::::::::: I:4 1.3.7.2 A Sample Variable Description :::::::::::::::::::::: I:6 1.4 Version Information::::::::::::::::::::::::::::::::::::::::::: I:6 1.5 Acknowledgements:::::::::::::::::::::::::::::::::::::::::::: I:7 2 Lisp Data Types :::::::::::::::::::::::::::::: I:8 2.1 Printed Representation and Read Syntax:::::::::::::::::::::: I:8 2.2 Comments :::::::::::::::::::::::::::::::::::::::::::::::::::: I:9 2.3 Programming Types :::::::::::::::::::::::::::::::::::::::::: I:9 2.3.1 Integer Type::::::::::::::::::::::::::::::::::::::::::::: I:9 2.3.2 Floating Point Type :::::::::::::::::::::::::::::::::::: I:10 2.3.3 Character Type::::::::::::::::::::::::::::::::::::::::: I:10 2.3.3.1 Basic Char Syntax ::::::::::::::::::::::::::::::::: I:10 2.3.3.2 General Escape Syntax::::::::::::::::::::::::::::: I:11 2.3.3.3 Control-Character Syntax :::::::::::::::::::::::::: I:12 2.3.3.4 Meta-Character Syntax :::::::::::::::::::::::::::: I:12 2.3.3.5 Other Character Modifier Bits ::::::::::::::::::::: I:13 2.3.4 Symbol Type ::::::::::::::::::::::::::::::::::::::::::: I:13 2.3.5 Sequence Types::::::::::::::::::::::::::::::::::::::::: I:14 2.3.6 Cons Cell and List Types ::::::::::::::::::::::::::::::: I:14 2.3.6.1 Drawing Lists as Box Diagrams :::::::::::::::::::: I:15 2.3.6.2 Dotted Pair Notation :::::::::::::::::::::::::::::: I:17 2.3.6.3 Association List Type :::::::::::::::::::::::::::::: I:17 2.3.7 Array Type ::::::::::::::::::::::::::::::::::::::::::::: I:18 2.3.8 String Type :::::::::::::::::::::::::::::::::::::::::::: I:18 2.3.8.1 Syntax for Strings:::::::::::::::::::::::::::::::::: I:18 2.3.8.2 Non-ASCII Characters in Strings ::::::::::::::::::: I:19 2.3.8.3 Nonprinting Characters in Strings :::::::::::::::::: I:19 2.3.8.4 Text Properties in Strings :::::::::::::::::::::::::: I:20 iv 2.3.9 Vector Type :::::::::::::::::::::::::::::::::::::::::::: I:20 2.3.10 Char-Table Type :::::::::::::::::::::::::::::::::::::: I:20 2.3.11 Bool-Vector Type:::::::::::::::::::::::::::::::::::::: I:21 2.3.12 Hash Table Type :::::::::::::::::::::::::::::::::::::: I:21 2.3.13 Function Type::::::::::::::::::::::::::::::::::::::::: I:21 2.3.14 Macro Type ::::::::::::::::::::::::::::::::::::::::::: I:22 2.3.15 Primitive Function Type ::::::::::::::::::::::::::::::: I:22 2.3.16 Byte-Code Function Type ::::::::::::::::::::::::::::: I:22 2.3.17 Autoload Type :::::::::::::::::::::::::::::::::::::::: I:23 2.4 Editing Types ::::::::::::::::::::::::::::::::::::::::::::::: I:23 2.4.1 Buffer Type :::::::::::::::::::::::::::::::::::::::::::: I:23 2.4.2 Marker Type ::::::::::::::::::::::::::::::::::::::::::: I:24 2.4.3 Window Type :::::::::::::::::::::::::::::::::::::::::: I:24 2.4.4 Frame Type :::::::::::::::::::::::::::::::::::::::::::: I:25 2.4.5 Terminal Type:::::::::::::::::::::::::::::::::::::::::: I:25 2.4.6 Window Configuration Type :::::::::::::::::::::::::::: I:25 2.4.7 Frame Configuration Type :::::::::::::::::::::::::::::: I:25 2.4.8 Process Type ::::::::::::::::::::::::::::::::::::::::::: I:25 2.4.9 Stream Type ::::::::::::::::::::::::::::::::::::::::::: I:26 2.4.10 Keymap Type ::::::::::::::::::::::::::::::::::::::::: I:26 2.4.11 Overlay Type:::::::::::::::::::::::::::::::::::::::::: I:26 2.4.12 Font Type ::::::::::::::::::::::::::::::::::::::::::::: I:26 2.5 Read Syntax for Circular Objects :::::::::::::::::::::::::::: I:26 2.6 Type Predicates ::::::::::::::::::::::::::::::::::::::::::::: I:27 2.7 Equality Predicates :::::::::::::::::::::::::::::::::::::::::: I:30 3 Numbers:::::::::::::::::::::::::::::::::::::: I:33 3.1 Integer Basics ::::::::::::::::::::::::::::::::::::::::::::::: I:33 3.2 Floating Point Basics :::::::::::::::::::::::::::::::::::::::: I:34 3.3 Type Predicates for Numbers :::::::::::::::::::::::::::::::: I:35 3.4 Comparison of Numbers ::::::::::::::::::::::::::::::::::::: I:36 3.5 Numeric Conversions :::::::::::::::::::::::::::::::::::::::: I:38 3.6 Arithmetic Operations ::::::::::::::::::::::::::::::::::::::: I:39 3.7 Rounding Operations :::::::::::::::::::::::::::::::::::::::: I:42 3.8 Bitwise Operations on Integers ::::::::::::::::::::::::::::::: I:42 3.9 Standard Mathematical Functions ::::::::::::::::::::::::::: I:46 3.10 Random Numbers :::::::::::::::::::::::::::::::::::::::::: I:47 4 Strings and Characters :::::::::::::::::::::: I:48 4.1 String and Character Basics ::::::::::::::::::::::::::::::::: I:48 4.2 The Predicates for Strings ::::::::::::::::::::::::::::::::::: I:49 4.3 Creating Strings ::::::::::::::::::::::::::::::::::::::::::::: I:49 4.4 Modifying Strings ::::::::::::::::::::::::::::::::::::::::::: I:52 4.5 Comparison of Characters and Strings
Recommended publications
  • MIT/GNU Scheme Reference Manual
    MIT/GNU Scheme Reference Manual Edition 1.99 for Scheme Release 7.7.90 18 September 2003 by Chris Hanson the MIT Scheme Team and a cast of thousands Copyright c 1991,1992,1993,1994,1995 Massachusetts Institute of Technology Copyright c 1996,1997,1999,2000,2001 Massachusetts Institute of Technology Copyright c 2002,2003 Massachusetts Institute of Technology Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover Texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled "GNU Free Documentation License". Acknowledgements 1 Acknowledgements While "a cast of thousands" may be an overstatement, it is certainly the case that this document represents the work of many people. First and foremost, thanks go to the authors of the Revised^4 Report on the Algorithmic Language Scheme, from which much of this document is derived. Thanks also to BBN Advanced Computers Inc. for the use of parts of their Butterfly Scheme Reference, and to Margaret O’Connell for translating it from BBN’s text-formatting language to ours. Special thanks to Richard Stallman, Bob Chassell, and Brian Fox, all of the Free Software Foundation, for creating and maintaining the Texinfo formatting language in which this document is written. This report describes research done at the Artificial Intelligence Laboratory and the Laboratory for Computer Science, both of the Massachusetts Institute of Technology.
    [Show full text]
  • Omnipresent and Low-Overhead Application Debugging
    Omnipresent and low-overhead application debugging Robert Strandh [email protected] LaBRI, University of Bordeaux Talence, France ABSTRACT application programmers as opposed to system programmers. The state of the art in application debugging in free Common The difference, in the context of this paper, is that the tech- Lisp implementations leaves much to be desired. In many niques that we suggest are not adapted to debugging the cases, only a backtrace inspector is provided, allowing the system itself, such as the compiler. Instead, throughout this application programmer to examine the control stack when paper, we assume that, as far as the application programmer an unhandled error is signaled. Most such implementations do is concerned, the semantics of the code generated by the not allow the programmer to set breakpoints (unconditional compiler corresponds to that of the source code. or conditional), nor to step the program after it has stopped. In this paper, we are mainly concerned with Common Furthermore, even debugging tools such as tracing or man- Lisp [1] implementations distributed as so-called FLOSS, i.e., ually calling break are typically very limited in that they do \Free, Libre, and Open Source Software". While some such not allow the programmer to trace or break in important sys- implementations are excellent in terms of the quality of the tem functions such as make-instance or shared-initialize, code that the compiler generates, most leave much to be simply because these tools impact all callers, including those desired when it comes to debugging tools available to the of the system itself, such as the compiler.
    [Show full text]
  • Programming with GNU Emacs Lisp
    Programming with GNU Emacs Lisp William H. Mitchell (whm) Mitchell Software Engineering (.com) GNU Emacs Lisp Programming Slide 1 Copyright © 2001-2008 by William H. Mitchell GNU Emacs Lisp Programming Slide 2 Copyright © 2001-2008 by William H. Mitchell Emacs Lisp Introduction A little history GNU Emacs Lisp Programming Slide 3 Copyright © 2001-2008 by William H. Mitchell Introduction GNU Emacs is a full-featured text editor that contains a complete Lisp system. Emacs Lisp is used for a variety of things: • Complete applications such as mail and news readers, IM clients, calendars, games, and browsers of various sorts. • Improved interfaces for applications such as make, diff, FTP, shells, and debuggers. • Language-specific editing support. • Management of interaction with version control systems such as CVS, Perforce, SourceSafe, and StarTeam. • Implementation of Emacs itself—a substantial amount of Emacs is written in Emacs Lisp. And more... GNU Emacs Lisp Programming Slide 4 Copyright © 2001-2008 by William H. Mitchell A little history1 Lisp: John McCarthy is the father of Lisp. The name Lisp comes from LISt Processing Language. Initial ideas for Lisp were formulated in 1956-1958; some were implemented in FLPL (FORTRAN-based List Processing Language). The first Lisp implementation, for application to AI problems, took place 1958-1962 at MIT. There are many dialects of Lisp. Perhaps the most commonly used dialect is Common Lisp, which includes CLOS, the Common Lisp Object System. See http://www-formal.stanford.edu/jmc/history/lisp/lisp.html for some interesting details on the early history of Lisp. 1 Don't quote me! GNU Emacs Lisp Programming Slide 5 Copyright © 2001-2008 by William H.
    [Show full text]
  • Free As in Freedom (2.0): Richard Stallman and the Free Software Revolution
    Free as in Freedom (2.0): Richard Stallman and the Free Software Revolution Sam Williams Second edition revisions by Richard M. Stallman i This is Free as in Freedom 2.0: Richard Stallman and the Free Soft- ware Revolution, a revision of Free as in Freedom: Richard Stallman's Crusade for Free Software. Copyright c 2002, 2010 Sam Williams Copyright c 2010 Richard M. Stallman Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the section entitled \GNU Free Documentation License." Published by the Free Software Foundation 51 Franklin St., Fifth Floor Boston, MA 02110-1335 USA ISBN: 9780983159216 The cover photograph of Richard Stallman is by Peter Hinely. The PDP-10 photograph in Chapter 7 is by Rodney Brooks. The photo- graph of St. IGNUcius in Chapter 8 is by Stian Eikeland. Contents Foreword by Richard M. Stallmanv Preface by Sam Williams vii 1 For Want of a Printer1 2 2001: A Hacker's Odyssey 13 3 A Portrait of the Hacker as a Young Man 25 4 Impeach God 37 5 Puddle of Freedom 59 6 The Emacs Commune 77 7 A Stark Moral Choice 89 8 St. Ignucius 109 9 The GNU General Public License 123 10 GNU/Linux 145 iii iv CONTENTS 11 Open Source 159 12 A Brief Journey through Hacker Hell 175 13 Continuing the Fight 181 Epilogue from Sam Williams: Crushing Loneliness 193 Appendix A { Hack, Hackers, and Hacking 209 Appendix B { GNU Free Documentation License 217 Foreword by Richard M.
    [Show full text]
  • Gnu-Manifesto.Pdf
    This is a verbatim copy of www.gnu.org/gnu/manifesto.html, converted into pdf for inclusion in a course reader. The GNU Manifesto by Richard Stallman The GNU Manifesto (which appears below) was written by Richard Stallman at the beginning of the GNU Project, to ask for participation and support. For the first few years, it was updated in minor ways to account for developments, but now it seems best to leave it unchanged as most people have seen it. Since that time, we have learned about certain common misunderstandings that different wording could help avoid. Footnotes added in 1993 help clarify these points. For up-to-date information about the available GNU software, please see the information available on our web server, in particular our list of software. For how to contribute, see http://www.gnu.org/help. What’s GNU? Gnu’s Not Unix! GNU, which stands for Gnu's Not Unix, is the name for the complete Unix-compatible software system which I am writing so that I can give it away free to everyone who can use it.(1) Several other volunteers are helping me. Contributions of time, money, programs and equipment are greatly needed. So far we have an Emacs text editor with Lisp for writing editor commands, a source level debugger, a yacc-compatible parser generator, a linker, and around 35 utilities. A shell (command interpreter) is nearly completed. A new portable optimizing C compiler has compiled itself and may be released this year. An initial kernel exists but many more features are needed to emulate Unix.
    [Show full text]
  • Lisping Copyleft: a Close Reading of the Lisp LGPL 15
    Lisping Copyleft: A Close Reading of the Lisp LGPL 15 Lisping Copyleft: A Close Reading of the Lisp LGPL Eli Greenbaum a (a) Attorney, Yigal Arnon & Co. Jerusalem DOI: 10.5033/ifosslr.v5i1.75 Abstract: The idioms of both the General Public License (the “GPL”) and the Lesser General Public License (the “LGPL”) seem to be grounded in the C programming language. This article analyses the Lisp Lesser General Public License (colloquially and here referred to as the “LLGPL”), a specific attempt to apply the LGPL to a language with a programming paradigm and method of building and distributing programs that traditionally differs substantially from the approach of C. In addition, this article attempts to understand whether the LLGPL actually succeeds in its stated goal of translating the LGPL to the Lisp context or whether the LLGPL changes the requirements and philosophical moorings of the LGPL. Keywords: Law; information technology; Free and Open Source Software; copyleft, copyright; derivation; compilation; Lisp; LGPL; Introduction The idioms of both the General Public License (the “GPL”) and the Lesser General Public License 1 (the “LGPL”) seem to be grounded in the C programming language. The licenses refer to “compiling”, “linking” and “header files”, features of the C programming languages which may not be present in other languages that are not traditionally compiled. Similarly, the licenses do not expressly include provisions relating to features of object-oriented programming languages.2 Do the GNU licenses work as intended when applied in these other contexts? 3 This article analyses the Lisp 1 The LLGPL license is drafted as a preamble to version 2.1 of the LGPL.
    [Show full text]
  • Editor War - Wikipedia, the Free Encyclopedia Editor War from Wikipedia, the Free Encyclopedia
    11/20/13 Editor war - Wikipedia, the free encyclopedia Editor war From Wikipedia, the free encyclopedia Editor war is the common name for the rivalry between users of the vi and Emacs text editors. The rivalry has become a lasting part of hacker culture and the free software community. Many flame wars have been fought between groups insisting that their editor of choice is the paragon of editing perfection, and insulting the others. Unlike the related battles over operating systems, programming languages, and even source code indent style, choice of editor usually only affects oneself. Contents 1 Differences between vi and Emacs 1.1 Benefits of vi-like editors 1.2 Benefits of Emacs 2 Humor 3 Current state of the editor war 4 See also 5 Notes 6 References 7 External links Differences between vi and Emacs The most important differences between vi and Emacs are presented in the following table: en.wikipedia.org/wiki/Editor_war 1/6 11/20/13 Editor war - Wikipedia, the free encyclopedia vi Emacs Emacs commands are key combinations for which modifier keys vi editing retains each permutation of typed keys. are held down while other keys are Keystroke This creates a path in the decision tree which pressed; a command gets executed execution unambiguously identifies any command. once completely typed. This still forms a decision tree of commands, but not one of individual keystrokes. Historically, vi is a smaller and faster program, but Emacs takes longer to start up (even with less capacity for customization. The vim compared to vim) and requires more version of vi has evolved to provide significantly memory.
    [Show full text]
  • Open Source Takes Shape
    Chapter 3 Open Source Takes Shape ince all early software was assumed to be open Much of the letter, however, attacks the community source—open to improvement and reuse—and the of sharing that was prevalent at the time: Stechnology of the time largely required that soft- ware be distributed in a form that allowed those uses, As the majority of hobbyists must be aware, most there was little need or drive to formalize the concept.1 of you steal your software. Hardware must be paid Eventually, however, as software matured, the oppor- for, but software is something to share. Who cares tunity to charge for it emerged. if the people who worked on it get paid?6 Unix was born in AT&T’s Bell Labs in 1969, but it was raised at UC Berkeley, where students and faculty Commercialization of software might be seen as a added many of the features we now recognize as essential natural evolutionary landmark, but it also reflected a pro- to the operating system, including virtual memory and found philosophical shift: software that had been easy to Library Technology Reports Library Technology almost every aspect of modern networking.2 Berkeley’s copy, learn from, fix, and share was being restricted to fit enhancements were distributed widely as a package called the economics of scarcity. BSD (Berkeley software distribution), and over time they The commercialization of software was happening, became as important to a Unix system as the licensed and not in a graceful leap, but in lurched motions, and Richard purchased product from AT&T.3 M.
    [Show full text]
  • Selected Essays of Richard M. Stallman
    Free Software, Free Society: Selected Essays of Richard M. Stallman Introduction by Lawrence Lessig Edited by Joshua Gay GNU Press www.gnupress.org Free Software Foundation Boston, MA USA First printing, first edition. Copyright © 2002 Free Software Foundation, Inc. ISBN 1-882114-98-1 Published by the Free Software Foundation 59 Temple Place Boston, MA Tel: 1-617-542-5942 Fax: 1-617-542-2652 Email: [email protected] Web: www.gnu.org GNU Press is an imprint of the FSF. Email: [email protected] Web: www.gnupress.org Please contact the GNU Press for information regarding bulk purchases for class- room or user group use, reselling, or any other questions or comments. Original artwork by Etienne Suvasa. Cover design by Jonathan Richard. Permission is granted to make and distribute verbatim copies of this book provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute translations of this book into another language, from the original English, with respect to the conditions on distribution of modified versions above, provided that it has been approved by the Free Software Foundation. i Short Contents Editor’s Note................................................ 1 A Note on Software .......................................... 3 Topic Guide ................................................ 7 Introduction ............................................... 11 Section One ............................................... 15 1 The GNU Project ....................................... 17 2 The GNU Manifesto ..................................... 33 3 Free Software Definition ................................. 43 4 Why Software Should Not Have Owners ..................... 47 5 What’s in a Name? ...................................... 53 6 Why “Free Software” is Better than “Open Source” ............ 57 7 Releasing Free Software if You Work at a University ........... 63 8 Selling Free Software ...................................
    [Show full text]
  • Free Software, Free Society: Selected Essays of Richard M
    Free Software, Free Society Selected Essays of Richard M. Stallman Third Edition Richard M. Stallman This is the third edition of Free Software, Free Society: Selected Essays of Richard M. Stallman. Free Software Foundation 51 Franklin Street, Fifth Floor Boston, MA 02110-1335 Copyright c 2002, 2010, 2015 Free Software Foundation, Inc. Verbatim copying and distribution of this entire book are permitted worldwide, without royalty, in any medium, provided this notice is preserved. Permission is granted to copy and distribute translations of this book from the original English into another language provided the translation has been approved by the Free Software Foundation and the copyright notice and this permission notice are preserved on all copies. ISBN 978-0-9831592-5-4 Cover design and photograph by Kyle Winfree. iii Table of Contents Foreword to the Third Edition ::::::::::::::::::::::::::::::::::::::: iv Foreword to the First Edition :::::::::::::::::::::::::::::::::::::::: vi Preface ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: x Part I: The GNU Project and Free Software 1 What Is Free Software? :::::::::::::::::::::::::::::::::::::::::::: 3 2 The GNU Project :::::::::::::::::::::::::::::::::::::::::::::::::: 9 3 The Initial Announcement of the GNU Operating System ::: 26 4 Free Software Is Even More Important Now ::::::::::::::::::: 28 5 Why Schools Should Exclusively Use Free Software::::::::::: 34 6 Measures Governments Can Use to Promote Free Software :: 36 7 Why Free Software Needs Free Documentation::::::::::::::::
    [Show full text]
  • Gelecek Fonksiyonel!
    Gelecek Fonksiyonel! Chris Stephenson Department of Everything University of Life created May 4, 2019 Chris Stephenson Slide 1 of 48 Not Her¸seyitekrar etmek istemedi˘gimiçin... https://chrisstephenson.org Chris Stephenson Slide 2 of 48 Giri¸s Yazılım ciddi i¸s... Chris Stephenson Slide 3 of 48 Giri¸s Yazılım ciddi i¸s... Chris Stephenson Slide 4 of 48 Giri¸s Yazılım ciddi i¸s... Chris Stephenson Slide 5 of 48 Giri¸s I Iki˙ defa oldu - toplam 346 ölü I Uçak tam gazlı yere çakıldı. I Pilotlar uça˘gıyukarı kaldırmaya çalı¸sıyorlardı. I Yazılım izin vermedi I Kılavuzda uça˘gınbu “özelli˘gi” yazılmıyordu I “Undocumented Feature” Chris Stephenson Slide 6 of 48 Giri¸s Yazılım ciddi bir i¸s I Programların do˘gru çalı¸sması I Toplumsal sorumluluklarımız I Kaynak israf etmemek I Gereksiz sera gazlari üretmemek. I Insanlı˘gafayda˙ sa˘glamak/zarar etmemek Chris Stephenson Slide 7 of 48 What is Going to be Hot? (2017 yılında dediklerim...) Iki˙ sene önce ne dedik? Chris Stephenson Slide 8 of 48 What is Going to be Hot? (2017 yılında dediklerim...) Functional Programming? Chris Stephenson Slide 9 of 48 What is Going to be Hot? (2017 yılında dediklerim...) I Haskell at Facebook I Ocaml at Jane Street I Scala in lots of places I Clojure etc etc... I node.js....interesting Chris Stephenson Slide 10 of 48 What is Going to be Hot? (2017 yılında dediklerim...) I Functions are first class values I No state, no assignment I Referential transparency I Closures, Higher order programming, function transformations I Optionally, laziness, powerful type systems Chris Stephenson Slide 11 of 48 What is Going to be Hot? (2017 yılında dediklerim...) I As a result..
    [Show full text]
  • Comparing LISP and Object-Oriented Programming Languages
    Wang 1 Pengfei Wang Professor Christopher A. Healy Computer Science 475 11 April 2016 Compare LISP with Object-Oriented Programming Languages Introduction LISP, which stands for List Processor, is a family of functional programming languages, invented by John McCarthy in MIT based on Lambda Calculus in 1958. It is the second-oldest high-level programming language and it was originally designed for Artificial Intelligence, but it is a good general-purpose language as well. This paper is going to discuss the differences between LISP and Object-Oriented Languages, focusing mainly on LISP. This paper is going to firstly introduce functional programming language and LISP. Then, advantages and disadvantages of LISP comparing to object-oriented languages will be discussed, and finally a specific case study will be done. Functional Programming Languages and List Processor Typically, programming languages are divided into two general types, imperative languages and declarative languages. The computer program written in imperative languages consists of statements, instructions, which indicate how (and in what order) a computation should be done. Imperative languages include all of the object-oriented languages. On the other hand, declarative languages define functions, formulas or relationships. Declarative languages do not specify how the functions are performed step-by-step in program. Functional Wang 2 programming language is one type of the declarative languages. ;; Example: Written in Common LISP (format t “Result: ~A.~%” (* 2 (+ 2 3))) ; functions /* Example: Written in C*/ int a = 2 + 3; /*statement*/ int b = a * 2; /*statement*/ printf("Result: %d.\n", b); /*statement*/ Function languages employ a computational model based on the recursive definition of functions.
    [Show full text]