lambdaway
::
coding3
3
|
list
|
login
|
load
|
|
_h1 [[λ{sup calc}|?view=coding]] | [[λ{sup talk}|?view=coding2]] | λ{sup tank} {{block} {uncover http://lambdaway.free.fr/lambdawalks/data/gandhi_adami 100 810 Live as if you were to die tomorrow. Learn as if you were to live forever. (Gandhi)} _h2 introduction _p The goal of the page [[λ{sup calc}|?view=coding]] was to give a gentle introduction to coding, highlighting the unicity of a mechanism used to evaluate expressions, which is nothing but a simple text replacement process. _p In the [[λ{sup talk}|?view=coding2]] page we discovered that {b lambdatalk} is not lost in an empty space. Hosted in {b lambdatank}, a small wiki installed on any web browsers, it takes benefit from powerful web technologies like HTML, CSS, SVG, DOM and Javascript. _p In this {b λ{sup tank}} page is introduced the {b IDE}, the {b I}nteractive {b D}evelopment {b E}nvironment, the {b wiki} itself. {center ((( Under construction )))} } {{block} {uncover {COCO}/t2_orchestre3.jpg 100 500 ORCHESTRE.3{br}encre monotype sur papier 18x24cm} _h2 1) lambdatank _p Most of time languages are embedded in Interface Development Environments rather difficult to instal, at least for non "geeks". '{lambda talk} works in a small wiki, '{lambda tank}, designed to be easy to instal. And its user inteface has been reduced to the bare minimum, the wiki page and a single frame editor. _p These are two session's screenshots: {center {img {@ src="http://lambdaway.free.fr/lambdaspeech/data/session_1.jpg" width="90%"}} {br} Using '{lambda talk} in '{lambda tank} } {center {img {@ src="http://lambdaway.free.fr/lambdaspeech/data/session_2.jpg" width="90%"}} {br} Editing a wiki page generating a PDF paper. } _h3 1.1) the wiki page _p The wiki page is initially empty, without any predefined structure, with just a title on top. Click on _ul 1) the [{b wiki name}] - here "lambdawalks" - to come back to the home page from any other wiki page, _ul 2) the double colon [{b : :}] to open/hide a tool bar, _ul 3) the [{b page name}] - here "coding3" - to open/hide the editor frame. _h3 1.2) the frame editor _p In the {b editor frame} you find a menu bar showing some informations and a wide text field in which you can write any words and expressions displayed and saved locally in real time, provided expressions are well balanced. For instance the expression '{b {i {u Hello World}}} is well balanced and displays {b {i {u Hello World}}}. And, if you are authorized, click on the button [{b save}] to upload the code on the server and so {b publish} the page. _p In the {b tool bar} you find: _ul the number of people connected, _ul a button [{b pages}] to display the list of pages saved on the server and have access to their history, if you are authorized, _ul a button [{b login|logout}] for authorized editors, _ul a button [{b load}] to load files - pictures, pdfs, ... - in the data folder, if you are authorized, _ul a [{b search field}] to open a page listing wiki pages containing the word you are looking for. _h3 1.3) kiss attitude _p Nothing else, no more buttons, no menus, no palette windows. Nothing but a view & an editor frames which can be moved inside the browser's window using the title/menu area as an handle. You can scroll the view and reduce or expand the editor to make editing comfortable, even on a mobile device. _p The lack of any button to boldify some selected text is not a weakness, it's a choice: {i you MUST bracket text between curly braces and add the command {b b} to the first one.} Coding simple things is the key for understanding and coding more complex ones. At least it's the key to a true collaborative work without shadow areas. _p That's all for one page. _h3 1.4) the wiki _p A wiki becomes quickly a set of numerous pages. Just write the name of a page you want to create between two double square opening and closing brackets and, thanks to Ward, this page {i virtually} exists. Go to this page and write something in it and it {i actually} exists. _p A blank page has no structure, except the predefined style which can be modified on demand. It's your responsability to write what you want how you want. You are free! And your wiki will become a bunch of simple notes, an album, a book, a workshop full of mathematical formulas and algorithms, or whatever else. _h3 1.5) a quick intoduction _p Wait and see ... meanwhile you could have a look at this [[quick introduction|http://lambdaway.free.fr/workshop/?view=introduction]]. } {{block} {uncover {COCO}/e2_bvl232.jpg 100 500 bleu profond{br}EXTREME LENTEUR DANS L.ESPACE{br}encre monotype sur papier 18x24cm} _h2 2) installation _p See the [[download]] page for full explanations. Here is a short introduction. _p All operations that follow assume that you have a web account (on a server running PHP without any required database system) and that you are able to use a FTP tool for uploading and downloading files. Filezilla fits perfectly. _h3 2.1) minimal installation _p The minimal installation is straightforward. _ul 1) download the ~25kb [[archive|archive.zip]], ;; [[github archive|https://github.com/amarty66/lambdaway/achive/master.zip]] _ul 2) unzip the archive, you get a ~100kb folder named "archive", _ul 3) rename it for instance "mywiki", avoiding spaces and esoteric characters, _ul 4) open your FTP tool and upload the folder to your web account. _p Your wiki "{b mywiki}" is ready! _h3 2.2) the first page _p Now you can write your first page. _ul 1) open any modern web browser and go to "{b mywiki}" in your web account, just write something like that {b http://yourdomain.com/{u mywiki}} in the browser's address field. _ul 2) the start page displays: _img data/wiki_start.jpg _ul 3) click on the title "start" to open the editor frame: _img data/wiki_start2.jpg _ul 4) in the editor frame, you should write the following code, no matter if you don't understand everything: _img data/wiki_start3.jpg _p Note that the page's content is displayed in real time. You have written your first page in the wiki using its language, {b lambdatalk}. You have learned to use a few basic but useful commands: _ul to write a title level 1 with the command {b _{span}h1 My wiki ¬}, (where {b ¬} is a line return) _ul to write 4 paragraphs with the command {b _{span}p any text ¬}, _ul to write 3 list items with the command {b _{span}ul any text ¬}, _ul to insert an expandable picture with {b '{uncover picture_URL 100 500 ... text ...}} _ul more simply, to insert a picture you would write {b _{span}img picture_URL ¬}, _ul to define a link to the page {b sandbox} writing {b [{span}[sandbox]]}, whether it exists or not, _ul to italicize "james bond" writing {b '{i james bond}} _p amongst hundreds of others. _p But {b you can't save it yet}, there is no {b Save} button! For obvious security reasons, you must be loged in the wiki to be autorised to save your work. You have to follow this process: _ul 1) first it's good to copy your code in the clipboard, _ul 2) click on the four points, {b ::}, of the page's title, then on {b login}, _ul 3) enter the login {b login1}, the password {b passwrd1} and {b submit}, _ul 4) you're back to page start, empty, _ul 5) now, reopen the editor, paste the clipboard and your page is restored, _ul 6) finally click on the {b save} button. _img data/wiki_start4.jpg _p Congratulations, your first page is now visible on the web! _p But, {b maybe}, not yet !! Your wiki is ready but your provider may have installed a protection against writing ! For instance, if your web account provider is [[www.free.fr|http://www.free.fr/]], you must create a folder "sessions" at the root of the account ; it doesn't work without. Other providers may have similar constraints. _p It's up to you to discover them :( and if necessary, ask a geek friend for help. _p There will always be time later to fine-tune the wiki. _h3 2.3) improved installation _p '{lambda tank} doesn't provide any inline administration interface, parameters must be edited in the "config.php" pure text file before uploading the wiki. You will find the {b config.php} file in the {b meca} folder. This its predefined state: {pre °° define ( "WIKI_NAME", "MYWIKI" ); define ( "LOCK", false ); // false: the wiki can't be edited define ( "START", "start" ); // "start", "accueil" define ( "FORUM", "agora" ); // "FORUM" and "SANDBOX" define ( "SANDBOX", "sandbox" ); // are always editable define ( "LOAD_MAX", "500"); // max size of uploadable files // caution, passwords are not crypted, don't worry it's a wiki $users = array( "login1" => "passwrd1", "login2" => "passwrd2" ); // don't modify define ( "VERSION", "lambdawalks v.20200202" ); define ( "TITLE", WIKI_NAME ); define ( "PAGES", "pages/" ); define ( "HISTORY", "history/" ); °°} _h3 2.3.1) change name _p By default, the name of the wiki is {b lambdaspeech}. In order to replace it with the name of your choice, you must be able to use a "plain text" editor like NotePad/NotePad2 on Windows, TextEdit/Smultron on Mac, Kedit on Linux. Verify that the text encodage is "UTF-8". _ul open your local folder « archive », _ul find the file « config.php », duplicate this file for security, _ul open it with the text editor, find the line {code define ("WIKI_NAME", "MYWIKI")} and replace {b MYWIKI} by your name, say {b toto's wiki}, _ul save the file and upload it on your web account. _p The complete title of your pages will be now {b toto's wiki :: start}, the wiki's address and the name pf the first page. _h3 2.3.2) create a users login array _p By default, the wiki has one predefined login:password. This is the process to define a set of authorized editors : _ul find and open the file « config.php » with the text editor, _ul find the predifined array and edit it, you can define several authorized people: {pre {@ style="padding-left:50px;"} °° $users = array( "one" => "azertyuiop" , "two" => "qsdfghjklmù" , "three" => "&é"'(§è!çà)-" ); °°} _h3 Notes: _ul Be careful when you modify this file, duplicate it before. _ul Anybody can edit the pages [[forum]] and [[sandbox]] and it may be undesirable. It's hardcoded in the "meca/PHP.php" file. There is a simple "hack" to hide them : _ul30 find and open the file « config.php » with the text editor, _ul30 give to the two constant "FORUM" and "SANDBOX" some obfuscated name like "@&é§èçà", {i et voilà !}, nobody will be able to reach them ! _h3 2.4) archive.zip content {pre archiv.zip |-- index.php |-- meca | |-- index.php | |-- config.php | |-- login.php | |-- PHP.php | |-- JS.js | |-- CSS.css | |-- _connected.txt | |-- _logs.txt |-- pages | |-- index.php | |-- start.txt | |-- ... |-- history | |-- index.php | |-- start | |-- yyyymmdd_hhmmss.txt | |-- ... | |-- ... |-- data | |-- index.php | |-- amelie_poulain.jpg | |-- ... | } _h3 2.5) licence _p The lambdaway project is a free and open source software, entirely built by me, {i Alain Marty}, on top of the web technologies, without any external dependancies. _p You can do pretty much anything you like with it, except: _ul Ship a closed source version of it or vary the availability of any part, original or additional. _ul Publish a "cut down" version unless you also provide a clearly visible link to a "complete" version. _ul Prohibit the inclusion of any modifications/ideas to the lambdaway project into future releases by any other party. _ul Object in any way other than meaningful and civilised debate should they be or not be incorporated. _ul Delete or obscure any author or origin details, or otherwise falsely claim any part as your own work. _ul Make malicious changes of any kind, including any intended to defame or discredit either author or product. _ul Implicate the product in any activity deemed illegal under current french law, irrespective of your location. _p You may sell a modified version of the lambdaway project, as long as you do not give away part of it. The source itself are deemed "as one" and cannot be sold or given away separately. A reasonable "cut down" version might exclude all the non-essential demo\bench\test\doc\sfx stuff, but if the sources are omitted they must be readily available elsewhere. Should you publish a modified version of the lambdaway project you automatically grant an absolute right to all interested parties to freely plagiarise or reverse engineer any useful features. Such rights do not extend to products or features unrelated to the compilation, interpretation, debugging, analysis, or production of plain text source code that just happen to be written in the lambdaway project. _p {i Alain Marty 2021} } {{block} {uncover {COCO}/e_aok2.jpg 100 500 AOK.3{br}encre monotype sur papier 10x15cm} _h2 3) the lambda way _p The '{lambda way} project is a workshop, a test bench for the language where are analyzed its capabilities and limits, (coherency, global/local, partial application vs closure, variadicity, memoization, speed, ...) and explored lots of known algorithms, (quickSort, FFT, big numbers, de Casteljau, convolution, ...). It's a random exploration leading to some refactorings of the kernel in a cyclic process. It's a work in progress towards a functional language which should be simple and useful, at least in a wiki context. _h3 3.1) comments _p This is what Ward Cunningham told about this work (2014/04/29): {blockquote {i « I am impressed with this work and understand {b its uniqueness better now}. I have also rambled through other pages you have made, many as experiments I would guess, and have been summarized by you in this single work. Bravo. » }} _p And also, a few months later: {blockquote {i « I was surprised that the technique worked so well in so many cases. I knew that regex are highly optimized and the cpus themselves optimize sequential access to memory which the regex must have at its core. [..] Yes, this has at its heart the repeated application of a text transformation. The fact that it is repeated application of the same transformation makes it exceptional. [..] Repeated application of Regular Expressions can perform Touring Complete computations. This works because the needed "state" is in the partially evaluated text itself. » All is said! }} _p and recently (19/07/2020) {blockquote {i « I’ve always admired your work, both the interpreter and your exploration of its capabilities. In the wiki tradition it offers clear passage into the networking and graphic capabilities of the browser. Thompson sees it as a philosophical artifact rooted in history and uncovered anew by you. » }} _p And Simon Peyton Jones (2019/02/14): {blockquote {i « I took a quick look. It looks cool -- I like the simple, minimal, but powerful approach. » }} _p And also Paul McJones (2019/02/16): {blockquote {i « I have admired the power and elegance of the lambda calculus since I first learned of it around 1970. And I have admired the elegance of the Wiki idea since I first ran across Ward Cunningham’s Wiki some years back. You’ve combined these ideas in a very interesting way, and {b you figured out a way to harness the power of web technologies} (JavaScript, HTML, CSS, etc.) to implement them. » }} _p On June 2014 somebody (pseudo "maufedz") wrote in [[Reddit|https://www.reddit.com/r/lisp/comments/1xfsd3/alphawiki/]]: {blockquote {i « I like it when I find this simple yet powerful ideas implemented, these are the things that when you see them you think, Why didn't I think of that? I think the results you have gotten from it speak by themselves, very nice looking dynamic pages, and very nice looking PDF export. I also liked your presentation on the 7th ELS, I saw a video of it, I was not there. »}} _p On April 2016 somebody (pseudo "sitkack") wrote in Hacker News: {blockquote {i « This is brilliant by the way. Definitely show it to more people and get feedback, it is so outside of the norm that {b it will take time for the idea to spread}. »}} _p This guy had therefore seen right, this project is probably very outside of the norm ... and the idea has no yet found where to spread. Meanwhile you can analyze a fork in Github by [[graham_simkins]] and some more comments [[here|http://lambdaway.free.fr/workshop/?view=comments]]... _h3 3.2) a work in progress _p It's a work in progress. Next steps: _ul a still to be improved interface ... staying in the {i KISS} attitude, _ul more built-in primitives, full libraries, (rational & complex numbers, 2D/3D algebra, spreadsheet, ray-tracing, lightboxes, ...), _ul a complete documentation, a tutorial, ... _p The '{lambda way} project is free{sup (GPL)}, without any external dependancies and can be loaded as a {b ~25kb} zipped archive. You just need some FTP tool - Filezilla, ... - to upload the expanded archive in any host provider running PHP, and a modern web browser to use it from anywhere. } {{block} {uncover {COCO}/e2_bvl232.jpg 100 500 bleu profond{br}EXTREME LENTEUR DANS L.ESPACE{br}encre monotype sur papier 18x24cm} _h2 conclusion {PICT} _p Here below the list of pages in this wiki, waiting for a more pleasant display... [[introductions]] [[download]] [[licence]] [[BOOK]] [[BOOK_intro]] [[whynot_fr]] [[fromroots2canopy]] [[coding]] [[lambdacode]] [[lambdaconsole|lambdaconsole/]] [[meta]] [[metatalk|?view=meta3]] [[kernel|?view=meta5]] [[(fun calc)|?view=meta6]] [[meta8]] [[pub]] [[RISC]] [[you]] [[digest]] [[λy|?view=bilingue]] [[Y]] [[supercombinator]] [[lambda_calculus]] [[rosetta]] [[echolisp]] [[simply_scheme]] [[caml]] [[reflexions_20200202]] [[reflexions_20201219]] [[reflexions_20210329]] [[JPR_20200718]] [[brian_harvey]] [[SPJ]] [[professeur]] [[future]] [[Ted Nelson|?view=ted_nelson]] [[JPR4]] [[l'anglais avec papy|http://b2b3.free.fr/covid19]] [[acte_archi]] [[CV]] [[colette]] [[timegoeson]] [[A.Scobeltzine|?view=andre_scob_20210218]] [[anges]] [[esprit_matiere]] [[memoire]] [[chers_amis]] [[embriologie]] [[lambda]] [[pair]] [[tuple]] [[fac9]] [[lambdafact]] [[IFAC]] [[ifac]] [[conventions]] [[turing_machine|?view=tm]] [[closure]] [[IIFE]] [[supercombinator]] [[WSAP]] [[WSAPL]] [[transtypage]] [[quote]] [[pair]] [[list]] [[hash]] [[object]] [[yield]] [[sort]] [[walkatree]] [[swap]] [[shuffle]] [[memoization]] [[loops]] [[for]] [[counter]] [[let]] [[continuation]] [[matrix]] [[JSON]] [[adder]] [[4bit_adder]] [[recursion]] [[from recursion to iteration|?view=trace2]] [[Fast Fourier Transform|?view=FFT]] [[decasteljau]] [[bezier]] [[matrix]] [[addmul]] [[egyptian_mult]] [[ethiopian_multiplication]] [[factorial]] [[left_factorial]] [[fibonacci]] [[BN]] [[pascal]] [[plot]] [[horner_newton]] [[hn2]] [[formulas]] [[PI]] [[hilbert]] [[turtle]] [[fern]] [[factors]] [[entropy]] [[frequency]] [[tokens]] [[occurrences]] [[rot13]] [[combinations]] [[permutations]] [[sifr]] [[arithmetic]] [[aks]] [[ifac_rfac]] [[fizzbuzz]] [[babbage]] [[phix]] [[ADN]] [[cypher]] [[pointintriangle]] [[mandelbrot]] [[integration]] [[binary_digit]] [[compare_strings]] [[interaction]] [[pforms]] [[uncover]] [[hanoi]] [[for]] [[repeat]] [[rosettacode|?view=qqqqqqq]] [[iter]] [[reduce]] [[sylvester]] [[erato]] [[sinus]] [[addstrbin]] [[memobin]] [[prime_factor]] [[swift]] [[doors]] [[modular_exp]] [[modulo]] [[feigenbaum]] [[madlibs]] [[quadratic]] [[occurrences]] [[tablesort]] [[lambda_paint]] [[interactive_cubic]] [[YinYang]] [[multiplication_table]] [[popnote]] [[TOC]] [[watch]] [[template]] [[boxedit]] [[worksheet]] [[blocks]] [[contenteditable]] [[conway]] [[life]] [[style]] [[quicksand]] [[fuzzy_circle]] [[circles2points]] [[matrix_screen]] [[easiest_way]] [[onglet]] [[fanfare]] [[libraries]] [[lib_complex]] [[lib_lightbox]] _p Meanwhile you could see how lambdatalk has solved about 200 tasks in [[rosettacode.org|http://rosettacode.org/wiki/Category:Lambdatalk]] and compare with 800 other languages. _p You are welcome in the {b lambdaway project}. _p {i marty.alain at free.fr (2021/06/01-5)} } {{hide} {def COCO http://colette.cerda.free.fr/coco.c/data} {def block div {@ style="display:inline-block; width:600px; vertical-align:top; padding:5px; "}} {def PICT {div {@ style="position:relative; top:0px; left:50%; margin-left:-200px; height:400px; text-align:center; color:#fff;"} {div {@ style="position:absolute; left:0px; bottom:0px; width:400px; height:350px; padding-top:50px; box-shadow:0 0 8px #000; border-radius:200px; font-size:72px; background:#ccc; "} {div {@ style="position:absolute; left:50%; margin-left:-125px; bottom:0px; width:250px; height:210px; padding-top:40px; border:1px solid #000; border-radius:125px; font-size:48px; background:#aaa; color:#0ff; "} {div {@ style="position:absolute; left:50%; margin-left:-75px; bottom:0px; width:150px; height:110px; padding-top:40px; border:1px solid #000; border-radius:75px; font-size:24px; background:#888; color:#0f0; "} {div {@ style="position:absolute; left:50%; margin-left:-37px; bottom:0px; width:75px; height:65px; padding-top:10px; border:1px solid #000; border-radius:37px; font-size:36px; background:#666; color:#f00; "} '{λy} }primitives}libraries}'{www}} }} } {style body { background:#444; } #page_frame { border:0; background:#444; width:600px; margin-left:0; } #page_content { background:transparent; color:#fff; border:0; width:3500px; box-shadow:0 0 0; font-family:papyrus, optima; } .page_menu { background:transparent; color:#fff; } a { color:#f80; } pre { box-shadow:0 0 8px #000; padding:5px; background:#444; color:#fff; font:normal 1.0em courier; } b { color:cyan; } h1 { font-size:4.0em; margin-left:0;} h2 { font-size:3.0em; } h3 { font-size:2.0em; } }
lambdaway v.20211111