Do You Want My Opinion By M Kerr Pdf To Excel

Posted on by
Do You Want My Opinion By M Kerr Pdf To Excel

Dear Daniel I enjoyed reading your article even though I must admit that I do have RALF: Recently Acquired LaTeX Fetish. At least we both agree that the end result does look better.

On the issue of LaTeX eliminating a lot of time wasted formating the pages I would say that there is a little bit of truth on both sides of the argument. I know that I have spent time setting up my preamble to obtain the results that I want. Sometimes I have to go to a website to look up the code that I need for a function (stuff that can be just a click of an icon in any word processor). For me it is worth it, I enjoy doing it. For a student who may have a deadline to meet for handing in assignments this can be a problem. As much as I praise LaTeX, I do caution young people that three days or less before an assignment is due is not the time to start learning LaTeX.

Do You Want My Opinion By M. SERIOUS WARNING - If you do any releases to your Psoas or Abs, you MUST READ THISToday, I want to tell you. Use Excel's Hyperlink Function to link to Google Maps. Although I did not really understand English, but I.

Do You Want My Opinion By M Kerr Pdf To Excel

This is something to do before the school year starts. The good news is that the learning curve has been flattened out thanks to the great LaTeX how-to videos on YouTube. I find that the new LaTeX text editors both on-line and the software we download can be just as easy to use as any word processor. Download Dvdfab Freeware.

Yes LaTeX does consume a lot more room on a hard disk but it is not an issue. I have installed LaTeX Live on a Raspberry Pi with an eight gig SD card and still had lots of room to work with files. Drivers Epson Dfx 8500 Manual. Today sixteen to thirty two gig SD cards are very inexpensive. For those of you reading this who are looking for a good note taking software that will export to LaTeX or HTML or Markdown check out the Zim Desktop Wiki.

Computer technology has displaced many jobs, I use to work for Kodak. I left Kodak to take a two year course to become a library technician. Within ten years computer technology did the same thing to library jobs that digital photography did to Kodak. I am still employed in library work part-time but my wife who is a highly skilled pre-press graphic artist, has had to leave the industry. It is not all bad. At one time, book publishers had all of the power. But not anymore as anyone can produce a good looking book using LaTeX.

As a law librarian, I see this as a good thing. (The environmental benefits of digital photography are huge, it had to happen) My first Linux distro was Red Hat 5.0. I looked at LaTeX then and I liked it but was not to happy about the learning curve and my relative low need to use it. Three years ago I took on the task of creating a poster to display at a law library conference and it rekindled my appreciation for LaTeX and now I wish that I had kept on with it. Today I use LaTeX to publish a newsletter and other documents for the library. Yes, it is worth the effort to learn it, and use it, but we must remember that we do not have to learn all of it, just what we need to know for the task at hand.

Best wishes John Kerr Guelph, Ontario. Hi John Thanks for your comment! What you’re using LaTeX for is exactly what it’s best for: publishing documents. What I regard as a problem is that it’s evangelised as a tool for writing them.

I like LaTeX a lot; I just think it’s important to be clear to students both about its real advantages and disadvantages and about the alternatives that exist. It produces beautiful PDFs, but that isn’t important for everybody, and what are usually sold as the advantages of writing in LaTeX are in reality the advantages of structured writing more generally. In my opinion, it’s the latter that we really need to be teaching, e.g.

Introducing the importance of having a hierarchy of headings, and explaining that this is how we do it in Word and this is how we do it in LaTeX, etc. Also, anyone considering working with LaTeX should know that using LaTeX doesn’t have to mean writing in LaTeX: one can e.g. Write in Markdown and then convert to LaTeX with Pandoc (and this gives the option of simultaneously converting to HTML and publishing to the web).

Or one can use Scrivener, Texts, Abiword, or Org-mode – all of which will export to LaTeX at the touch of a button. On the size of TeX Live: that didn’t bother me until I decided to install a relatively minimal Linux setup in order to keep as much disk space as possible free for data (some of my datasets are quite large). I carefully reviewed the size of each package before installing it, and realised that TeX Live would be the largest of all by a considerable margin.

That struck me as wrong: I only needed XeTeX and XeLaTeX, which are quite small. So I tried to install just those. While I did eventually manage it, it took a long time and was very frustrating – and what was most frustrating was that when I looked for help online, the advice I found basically amounted to ‘install TeX Live; everybody else does’. On computer technology displacing jobs: there’s a lot more of that coming, but you’re right, it’s not all bad. The point I was making above is that if one is publishing a book with a conventional publisher (and not self-publishing it), then by typesetting it oneself in one’s spare time, one is directly taking work away from someone who would have been paid to do it.

And that doesn’t really matter if only a handful of us do it, but it would matter if everybody did. I’m sorry about what happened to your wife’s job – and about the skills that are disappearing in that industry (skills that were and still are in many cases an important part of their possessors’ identities). Best wishes Daniel. You may not like pale grey on green, but I do. Incidentally, this is a nice illustration of the distinction between semantics and presentation — a distinction that LaTeX unfortunately collapses.

The semantics of my text are declared in HTML, and have no particular colour. The colour is declared in a separate CSS file, which you can effectively switch on and off, and which I can easily change for another. And in fact, I wrote the text not in HTML but in the ‘HTML lite’ that WordPress generates HTML from. Moreover, while I didn’t do so in this case, I often write in Markdown, which is a purely semantic declarative markup language that I can compile to HTML or to WordPress’s ‘HTML lite’ or indeed to LaTeX and thence to PDF. The trouble with starting in LaTeX (i.e.

Composing a text using LaTeX markup from the beginning and not, for example, generating LaTeX from some other source) is that LaTeX is a mishmash of semantics and presentation on top of an imperative presentational markup language called TeX — and that while it’s less verbose than TeX, it’s much more verbose than several other alternatives that now exist. I believe that people are resistant to acknowledging this because of the immense personal, social, and institutional investment in LaTeX within certain communities. That is what I call the ‘LaTeX fetish’. As you point out, there are two audiences for LaTeX.

The more enthusiastic audience seems to be comprised of physical scientists who are drawn to its ability to assist their composition and editing of formulas and equations. Documents also include ordinary language, and herein lies the rub.

Too many documents have what I call “the look of LaTeX” – an ugly typeface, awkward spacing, and heading fonts that are out of proportion with the text. Moreover, they feature what, I am sorry to say, is plainly poor writing.

Because LaTeX is not a good editing platform, I wonder whether it hides or actually encourages bad grammar, poor sentence construction, and errors of expression and reasoning. I suspect that most users of, call it, “editing” software are either using what is at hand or what they are expected to use. At my workplace, copies of MS Office are on every agency-provided computer; employees can purchase a copy of Office Professional Plus for their personal use for all of $10.00.

That’s a great deal for us, but an even better deal for a behemoth that wants to keep the office software market in its corner. How can Corel, the current owner of WordPerfect, compete? If there is a competition, it is between products that take entirely different approaches to the task. One is structured into objects and containers, like a relational database.

The other is a type stream that you use somewhat like you regulate the water that comes out of a faucet. I doubt that many users of these products understood the difference when they made the commitment or when the product was selected for them. The appeal of LaTeX is that it seems on the surface to be an ideal combination of both: It is a type-stream product that applies hierarchical structure in the background. The problem, as you point out, is that by default it does a poor job of both. I endorse your idea of composing and editing with a word processing program, then importing the text into a dedicated typsetting or desktop publishing program that you have learned to use skillfully. The difficulty here is that the LaTeX shops that are set-up mainly around academic departments and disciplines seem to value conformity above all; the camaraderie they exhibit is based on a mythology that all they need to do is put their fingers on the keyboard and the rest will take care of itself.

Excellent points, especially this: The difficulty here is that the LaTeX shops that are set-up mainly around academic departments and disciplines seem to value conformity above all What is behind that phenomenon, I suspect, is a fear that the technical expertise embodied by those ‘LaTeX shops’ would be devalued if it were admitted that there is no particular advantage to writing in LaTeX. From this, the need for conformity arises: to reproduce the demand for LaTeX expertise, there must be new LaTeX learners. And so learning to use LaTeX comes to be treated as an integral part of becoming a scientist. Hence all the false claims about the inferiority of word processors, I think. The idea of writing in LaTeX for purely social reasons doesn’t seem very attractive.

Try setting formulae in Word or most any other Wordprocessor. Latex can be used for literary works but afaik that was never its prime design intention. The article is interesting but it comes over simply as a wordy case of someone who has found it difficult to get to grips with Latex.and chosen to write about why they cannot use it! The *really difficult* thing about TeX/Latex is setting diagrams.

The GUI-type packages help, tikz, for example, but even they need a considerable investment in time and require a certain standard of mathematics. It takes effort to understand and use Latex to a decent standard and it is not the easiest of tasks. But what it does is amazing and well worth the investment – if you need what it has to offer. The article is interesting but it comes over simply as a wordy case of someone who has found it difficult to get to grips with Latex.and chosen to write about why they cannot use it! And your comment comes over simply as a hasty case of someone who couldn’t be bothered to read my article but has chosen to reply anyway.

(Sorry to be snarky, but you weren’t exactly polite.) I can and do use LaTeX. The article is about why people should stop advertising LaTeX to students with false claims. Try setting formulae in Word or most any other Wordprocessor. Latex can be used for literary works but afaik that was never its prime design intention. Stop right there – that’s exactly what I said! The second half of the title is ‘Don’t write in LaTeX! It’s just for typesetting.’ Of course LaTeX is good for setting formulae.

It’s just not very good for writing or editing text – which is an issue not just for ‘literary works’ but also for conference papers, journal articles, student assignments, etc. Paul put it well in: ‘The more enthusiastic audience [for LaTeX] seems to be comprised of physical scientists who are drawn to its ability to assist their composition and editing of formulas and equations.

Documents also include ordinary language, and herein lies the rub.’ If people want to write prose in LaTeX, then of course that’s their own business. But using false arguments to persuade students that LaTeX is better for writing prose in than a word processor is wrong – both for the reason that using false arguments to persuade people of things is always wrong and for the additional reason that most students find writing really hard and need to spend time learning to write better, rather than wasting time learning to typeset their writing (whether with LaTeX or with anything else). Do people really use false arguments to persuade students that LaTeX is better for writing in than a word processor? Indeed they do; I quote examples of such false arguments in section 3, and show that they are false in section 4.

I’ll re-quote one of them in a moment. The *really difficult* thing about TeX/Latex is setting diagrams.

It’s also pointless unless you self-publish, because most publishers don’t want anything to do with the results. And I don’t just mean publishers of humanities and social science journals, but publishers of leading journals in the hard sciences too. This, for example, is the policy at PLOS ONE: PLOS does not accept vector EPS figures generated in LaTeX. Submit TIFF or EPS figures created in standard software. And while it’s possible to convert your LaTeX diagrams into a format that PLOS will accept (and the above-quoted page gives instructions for doing so), it’s much easier to cut out the (as you put it) ‘*really difficult*’ LaTeX stage and create them in ‘standard software’ to begin with.

But many people seem to love doing things the really hard way for the sake of it (i.e. Even when there’s no advantage beyond personal satisfaction and the kudos that comes from having demonstrated the ability to do something really hard), and I suspect that this has played a role in the spread of LaTeX beyond the sphere for which TeX was originally intended. It takes effort to understand and use Latex to a decent standard and it is not the easiest of tasks. But what it does is amazing and well worth the investment – if you need what it has to offer. I just want its evangelists to be honest about what it really does have to offer. You, for example, were honest about that when you said ‘Try setting formulae in Word or most any other Wordprocessor.’ An example of dishonesty is telling students that ‘[w]ith a word processor, changing the formatting means you have to change each instance individually’, because that is simply not true.

And that’s a real example. As an opinion piece it’s a worthwhile point of view and a good read—thank you.

As a decisive argument as to why one should not write content using LaTeX I don’t find it particularly persuasive. How we write is very personal, whether on a keyboard or with a pen. LaTeX, in the end, is simply code for the purposes of creating a final, human readable, output.

‘Readability’ is an issue for the output; as afar as ‘readability of code’ is concerned LaTeX is perfectly functional, especially on a well set up editor. WISIWYG ‘word processors’ are, in their own ways, just as clunky, and in certain cases very inappropriate and clumsy tools for producing good quality output. As someone has already stated in their own terms, this ends up being a case of ‘horses for courses’. LaTeX/WISIWYG are not panaceas for writing good content or good output, they are tools for a very complex task. Depending on personality and need one may suit someone very well most of the time, some of the time, or none of the time, but at least there is a choice. We should be free to explore those choices, learn from others, and come to our own conclusions. Personally, I find LaTeX very satisfying, both to use and to learn.

Do I use it for everything? No, but when it comes to providing consistent high quality output, especially in longer documents I hugely prefer it to the WISIWYG alternatives, but that is just me. One other thing: seeing the.tex extension on a file fills me with joy.

It will be almost certain that I will not only be able to open the file, but that I will be able to compile it to produce the output the author intended. Other systems are still fighting like cats in a sack over file formats and standards, and even applications in the same family cannot be guaranteed to make sense of files produced by their ancestors. In the same spirit as your article, I didn’t bother finishing it before offering my opinion — why invest all that effort just to know what I’m talking about?

But I did read the first couple of pages, in which you list a bunch of objectionable (to you) attributes of any LaTeX-generated document, ALL of which are incorrect. I’m fine with using WYSIWYG word processors to write text-only papers and letters and notes to their pals, but I have suffered mightily trying to generate readable documents containing mathematics and/or captioned figures using publisher-mandated word processors.

The amount of effort required to use those beasts for anything technical far exceeds the net effort I have invested in LaTeX and other adaptations of TeX, and the results are still unacceptably bad. I don’t expect anyone who doesn’t know what a command line is to fully grok LaTeX, but if you want to go on a jihad to wipe out LaTeX by convincing neophytes not to use it, perhaps you should eschew the use of “alternative facts” and learn how it actually works & what it can actually do. In the same spirit as your article, I didn’t bother finishing it before offering my opinion — why invest all that effort just to know what I’m talking about? Had you bothered finishing my article, you would have realised that I do know what I’m talking about. I don’t expect anyone who doesn’t know what a command line is to fully grok LaTeX, but if you want to go on a jihad to wipe out LaTeX by convincing neophytes not to use it, perhaps you should eschew the use of “alternative facts” and learn how it actually works & what it can actually do.

I did learn how it works and what it can do — and had you read the article, you would have realised that. And I have no intention of wiping out LaTeX, just of helping neophytes to understand what it’s actually for. This might well result in some of them leaving it alone if the thing that it’s actually for turns out to be not that important to them. Or it might result in some of them exploring some of the alternatives that I suggest, e.g. Generating LaTeX from text structured in other systems (e.g. With Markdown).

I’m fine with using WYSIWYG word processors to write text-only papers and letters and notes to their pals, but I have suffered mightily trying to generate readable documents containing mathematics and/or captioned figures using publisher-mandated word processors. You see, this is the problem with commenting on articles that you haven’t actually read. I know that LaTeX is good for typesetting mathematics. In fact, I say so in my article. You know — the one you didn’t read.

My article is written against the false claim that LaTeX is somehow better for writing text than word processors are. You don’t make that claim.

However, many introductions to LaTeX do, and I quote examples of such misinformation in my article. But hey, have a nice day. Daniel’s argument, summarized, is that people should use the right tool for the job.

When it comes to writing, there’s a place for word processing software and a place for typesetting software. He is encouraging you to learn how to use both, in complementary fashion. To understand Daniel’s idea, you must be able and willing to read what he says. You also must be willing to consider, even provisionally, that Daniel is saying something beyond the usual diatribe of product A is better than product B.

Why don’t you surprise me and demonstrate that you are up to the task? Daniel Allington: Thanks for writing, and creating this post. I originally stopped by to skim it but I ended up heartily enjoyed reading almost everything on this webpage. Now what I didn’t expect to find was this gold mine of a Comments section.

The commenters, and your responses, kept the fire alive. Thank you, everybody who posted here. — I do have a question * Who are these people saying you must write regular text in latex? Because honestly, I didn’t even know latex existed until I was pushed to the point of insanity trying to typeset f(x) = pi / 2 into a computer, and I kept google searching “how the fuck do I write equations”. You almost discouraged me from using latex entirely. That’s probably why everybody in comments is bashing on you, your post really does come off that way. (so does the title.) — I personally find that any notepad program works best for me when just writing text because then I can ACTUALLY focus on just the writing.) I’m glad you mentioned markdown and pandoc =) — On a side note, you don’t have to use wikitext on wikipedia anyway (it’s: See: — I await your responses of rage, at those comments in which you engage, in this war of pro-grams that you wage, y u so mad, that you wrote a whole page?

¯ _(ツ)_/¯ Sincerely, Popcrate — P.S. You might find it interesting that this got caught in the google results: and provided a nice “related articles” link to the reference (because its search-friendly format.). Hi Popcrate Thanks for writing, and creating this post.

I originally stopped by to skim it but I ended up heartily enjoyed reading almost everything on this webpage. Thanks for your comment! I’m glad you found the essay (and comments) enjoyable. I’ve argued for years that Open Access isn’t enough: communicating inside and outside the academy requires different voices. So I make a point of writing my blogposts in a less serious tone than my research papers. Now what I didn’t expect to find was this gold mine of a Comments section. Yes, I seem to have touched a nerve!

The commenters, and your responses, kept the fire alive. That’s certainly true. I often wonder whether I should go back to my old policy of closing posts to comments after a week or so in order to cut down on spam, but then something like this will happen and remind me of the value of feedback.

Even the antagonistic comments are valuable because they provide an opportunity for clarification. That said, there are limits.

Last year, one of my posts got a comment from a white nationalist — there’s no point engaging with people like that. I do have a question * Who are these people saying you must write regular text in latex?

There are plenty of those. See Section 3 of my essay, above. (Although they don’t say ‘you must’ — they just say that it’s better if you do.) because honestly, I didn’t even know latex existed until I was pushed to the point of insanity trying to typeset f(x) = pi / 2 into a computer, and I kept google searching “how the fuck do I write equations”. Yes, that’s what LaTeX is good for: typesetting equations. However, you don’t need LaTeX-the-computer-program for that if you’re publishing to the web. LaTeX-the-computer-program produces.ps or.pdf files for printing out, but if you’re planning to keep things in the digital realm, you might be better off with MathJax or jsMath. These take equations written out in LaTeX-the-markup-language and render them in the browser.

Or you can write your equations out in MathML rather than LaTeX-the-markup-language, and the browser will render them by itself. Whichever of these routes you take, the results will look just as good. Also, you don’t need to write the surrounding text in LaTeX-the-markup-language, which is a win.

You almost discouraged me from using latex entirely. Just kidding. I don’t want people to stop using LaTeX; I want them to think twice before adopting it or recommending others to adopt it. It has advantages but not everybody really needs those advantages, and it also has disadvantages that are not always made clear to newbies. That’s probably why everybody in comments is bashing on you, your post really does come off that way.

(so does the title.) The title doesn’t say ‘Don’t use LaTeX at all’, it says ‘Don’t write in LaTeX! It’s just for typesetting’. The reason people read ‘Don’t write in LaTeX’ as ‘Don.

Notes from KatsConf2 19 Feb 2017 Hello from Dublin! Yesterday I had the privilege of attending, a functional programming conference put on by the fun-loving, welcoming, and crazy-well-organized. It was a whirlwind of really exciting talks from some of the best speakers around. Here’s a glimpse into what I learned. • There’s no such thing as an objectively: all languages make tradeoffs. But it is possible to find/design a language that’s more perfect for you and your project’s needs. • Automation, automation, automation: • lets you write high-level code that generates low-level code • Program and let you write specifications/tests and leave it to the computer to figure out the code • (Boring!) code rewriting tasks can be too •, are (cool/mindblowing) things.

• You can do - and interestingly, even in a. I took a bunch of notes during the talks, in case you’re hungering for more details.

But took amazing graphical notes that I’ve linked to in the talks below, so just go read those! And for the complete experience, check out this storify, who led a great ally skills workshop the evening before the conference, made of the tweets. (define append (lambda (l s) (if (null? L) s (cons (car l) (append (cdr l) s)))) We’re going to use a relational programming language called Mini Kanren which is basically an extension that has been applied to lots of languages which allows us to put in variables representing values and ask Kanren to fill in those values. So I’m going to define appendo. (By convention we define our names ending in -o, it’s kind of a long story, happy to explain offline.) Writes a bunch of Kanren that we don’t really understand Now I can do.

>(run 1 (q) (evalo `(letrec ((append (lambda (l s) (if (null? L) q (cons (car l) (append (cdr l) s))))))) (append '(a b c) '(d e)) '(a b c d e))) (s) Now we’re starting to synthesize programs, based on specifications. When I gave this talk at PolyConf a couple of years ago Jessitron trolled me about how long it took to run this, since then we’ve gotten quite a bit faster. This is a tool called that I (and Greg Rosenblatt) have been working on, and it’s basically a frontend, a dumb GUI to the interpreter we were just playing with. It’s just a prototype.

We can see a partially specified definition - a Scheme function that’s partially defined, with metavariables that are fill-in-the-blanks for some Scheme expressions that we don’t know what they are yet. Barliman’s going to guess what the definition is going to be. (define,A (lambda,B,C)) Now we give Barliman a bunch of examples. Like (append '() '()) gives '(). It guesses what the missing expressions were based on those examples. The more test cases we give it, the better approximation of the program it guesses.

With 3 examples, we can get it to correctly guess the definition of append. Yes, you are going to lose your jobs.

Well, some people are going to lose their jobs. This is actually something that concerns me, because this tool is going to get a lot better. If you want to see the full dog & pony show, watch the I gave with Greg. Writing the tests is indeed the harder part. But if you’re already doing TDD or property-based testing, you’re already writing the tests, why don’t you just let the computer figure out the code for you based on those tests? Some people say this is too hard, the search space is too big. But that’s what they said about Go, and it turns out that if you use the right techniques plus a lot of computational power, Go isn’t as hard as we thought.

I think in about 10-15 years program synthesis won’t be as hard as we think now. We’ll have much more powerful IDEs, much more powerful synthesis tools. It could even tell you as you’re writing your code whether it’s inconsistent with your tests. What this will do for jobs, I don’t know. I don’t know, maybe it won’t pan out, but I can no longer tell you that this definitely won’t work. I think we’re at the point now where a lot of the academic researchers are looking at a bunch of different parts of synthesis, and no one’s really combining them, but when they do, there will be huge breakthroughs. I don’t know what it’s going to do, but it’s going to do something.

Working hard to keep things lazy Raichoo @raichoo The how, why, and trade offs of non-strictness in Haskell — Jessica Kerr (@jessitron) Without laziness, we waste a lot of space, because when we have recursion we have to keep allocating memory for each evaluated thing. Laziness allows us to get around that.

What is laziness, from a theoretical standpoint? The first thing we want to talk about is different ways to evaluate expressions. =>(1 + 1) + (2 + 2) =>2 + 4 =>6 This evaluation was normal form Church-Rosser Theorem: the order of evaluation doesn’t matter, ultimately a lambda expression will evaluate to the same thing. We have things like non-termination, and termination can only be determined after the fact. Here’s a way we can think of types: Let’s think of a Boolean as something which has three possible values: True, False, and “bottom”, which represents not-yet-determined, a computation that hasn’t ended yet.

True and False are more defined than bottom (e.g. _ _ False, which doesn’t work - that’s a good thing because if it did, we would have solve the halting problem.

What’s nice here is that if we write a function and evaluate it in normal order, in the lazy way, then this naturally works out. Laziness is basically non-strictness (this normal order thing I’ve been talking about the whole time), and sharing. Laziness lets us reuse code and use combinators. This is something I miss from Haskell when I use any other language. Honorable mention: Purely Functional Data Structures by Chris Okasaki. When you have Persistent Data Structures, you need laziness to have this whole amortization argument going on. This book introduces its own dialect of ML (lazy ML).

How do we do laziness in Haskell (in GHC)? At an intermediate stage of compilation called STG, Haskell takes unoptimized code and optimizes it to make it lazy. (???) Total Functional Programming Edwin Brady @edwinbrady Type driven development of interactive, total programs — Jessica Kerr (@jessitron) is a pure functional language with dependent types.

It’s a “total” language, which means you have program totality: a program either terminates, or gives you new results. Goals are: • Encourage type-driven development • Reduce the cost of writing correct software - giving you more tools to know upfront the program will do the correct thing. People on the internet say, you can’t do X, you can’t do Y in a total language.

I’m going to do X and Y in a total language. Types become plans for a program. Define the type up front, and use it to guide writing the program. You define the program interactively.

The compiler should be less like a teacher, and more like a lab assistant. You say “let’s work on this” and it says “yes! Let me help you”. As you go, you need to refine the type and the program as necessary. Test-driven development has “red, green, refactor”.

We have “type, define, refine”. If you care about types, you should also care about totality. You don’t have a type that completely describes your program unless your program is total. Given f: T: if program f is total, we know that it will always give a result of type T. If it’s partial, we only know that if it gives a result, it will be type T, but it might crash, run forever, etc. And not give a result. The difference between total and partial functions in this world: if it’s total, we can think of it as a Theorem.

Idris can tell us whether or not it thinks a program is total (though we can’t be sure, because we haven’t solved the halting problem “yet”, as a student once wrote in an assignment). If I write a program that type checks but Idris thinks it’s possibly not total, then I’ve probably done the wrong thing. So in my Idris code I can tell it that some function I’m defining should be total.

I can also tell Idris that if I can prove something that’s impossible, then I can basically deduce anything, e.g. An alt-fact about arithmetic. We have the absurd keyword. We have Streams, where a Stream is sort of like a list without nil, so potentially infinite.

As far as the runtime is concerned, this means this is lazy. Even though we have strictness. Idris uses IO like Haskell to write interactive programs.

IO is a description of actions that we expect the program to make(?). If you want to write interactive programs that loop, this stops it being total.

But we can solve this by describing looping programs as a stream of IO actions. We know that the potentially-infinite loops are only going to get evaluated when we have a bit more information about what the program is going to do. Turns out, you can use this to write servers, which run forever and accept responses, which are total.

(So the people on the internet are wrong). Check out David Turner’s paper “Elementary Strong Functional Programming”, where he argues that totality is more important than Turing-completeness, so if you have to give up one you should give up the latter. Book coming out.