Haskell kaj ŝanĝo: ja eblas

Oni diras, ke Haskell ne subtenis skribi programojn kiujn uzas ŝanĝemajn algoritmojn. Eble ĝi ne helpas tian skribon, sed ĝi ja ne malhelpas ĝin. Mi proponas la laŭpostulan algoritmon de la fibonaĉaj numeroj. Ĝi kalkulas la fibonaĉaj numeroj, ordone. Oni povas vidi ĝin je GitHub (la tutan, ankaŭ la dosieron “Antaŭludo.hs”, kiun mi uzis pro la traduko), aŭ laŭ vole ĉi tie. Mi konsilas, ke se vi deziras traduki kaj ruligi ĝin, vidu GitHub ĉar tie WordPress ne ŝanĝis ĝin laŭ sia volo.

{-# LANGUAGE UnicodeSyntax, NoImplicitPrelude #-}
module Main
where

import Antaŭludo

fib
fib n = ruliguSF $ do

a novaSFRef 0
b novaSFRef 1
kalkulon novaSFRef 1
dumM_ ((n >) <$> leguSFRef kalkulon) $ do

aMalnova leguSFRef a
skribuSFRef a =<< leguSFRef b
ŝanĝuSFRef’ b (+ aMalnova)
ŝanĝuSFRef’ kalkulon (+ 1)

leguSFRef b

ruligu Liston Ĉenan Enelon ()
ruligu [n] = videbligu $ fib (legu n)
ruligu _ = malsukcesu “Mi deziras unu numeron n, kaj mi aldonos la n-an fibonaĉan numeron”

main Enelon ()
main = trovuOperandojn >>= ruligu

Ja, eble ĝi ne estas tiel klara kiel aŭ la ordonemaj lingvoj aŭ la funkcia solvo Haskellingva, sed ĝi ja funkcias, kaj ĝi ne estas nur ŝajne, sed fakte ordona. Kaj laŭ mi estas nur la <$> en dumM_  ĉuo.

Kaj, malsame kiel aliaj solvoj, oni povas kalkuli tiel granda fibonaĉaj numeroj kiel vi povas teni en sia memoro. Aliaj solvoj perigas ne la entjerojn, sed nur la subaron, kiun oni povas teni en eble 32 aŭ 64 bitoj — kaj temas pri kaj la respondo, kaj la demando.

Advertisements

sano tra religio?

mi ĵus rigardis videon pri religio kaj sano. temas pri la sanaj plibonigoj de religio. ekzemple, kanceruloj vivas pli longa, se si estas religiema ol se ne. certe ne ekzistas sanaj bazoj por malakcepti religion; kaj mi ne trovis iujn bazojn ajn objektivajn dum mia serĉo. religio kaj ateismo/nereligio ne estas la samo, sed bazojn por elekti trovas oni mem el la eroj da sia vivo.

la plibonigoj de religio ne estas interne al religio. la video mem klarigas tion: “fakuloj atentigas tamen, ke povas okazi negativaj influoj de religiemo, se [oni] ligiĝas al sekto, kiu tro emfazas kulpon, punon, senkritikan akcepton de reguloj kaj konsciencriproĉojn”. fakte, la plibonigoj ne bezonas kredon je dion, diojn, postmortan vivon aŭ iun ajn spiritualismaĵo. sed fakte, nek la plibonigoj nek la religio.

fakte oni povas akiri tiujn plibonigoj de ekster religiujo. en iuj urboj, la esperantujo povas esti potenca komunumo por trovi amikojn, amuzojn kaj distraĵoj, kaj tie esperantujo estas tiel bona kiel religio, aŭ eĉ pli. ĉar la plibonigoj estas, ke onia emocia stato estas pli bona, kiam oni estas ano de daŭraj komunumoj, kaj travivas la streĉojn kaj luktojn de vivo nesola.

do, praktike, kion konsilas mi al iu, kiu estas tro sola por sano? tiu estis mi mem antaŭ iuj jaroj. dum jaroj mi luktis; fojfoje mi ja ĉeestis ekleziojn, kaj trovis ilin bonaj por helpi min, ne atingi la teron dum falo; sed ne perema, por malheli la ekfalon.

fakte, mi translokiĝis ien, kie mi povas pli facile akiri socivivon, el solloĝejo al kunloĝejo. tio ĉi ne estis facila, mi timis pri se mi povas kun aliuloj vivi ree. sed por mi, estas la plej bona elekto, kiun mi antaŭ jaroj elektis.

mi lernis esperanton en la esperanta komunumo de mia urbo (kaj tial, mi lernis esperanton en la komunumon). mi lernis novajn ŝatokupojn kaj trovis novajn amikojn tie kaj ĉi tie. kaj, trans la lukton, mi renaskiĝis kaj akiris vivon denove.

okazos, ke miaj agoj ne povas peri ekzemplojn dum ĉies soleco. unu feliĉon havas feliĉuloj; sed malfeliĉuloj havas po unu malfeliĉo, tolstoje. kvankam trovu ulojn per ciaj propraj manieroj: per religio, per esperanto, per verkado, per ….

Rakonto, versio 0.1.0

Mi kaj mia patnero antaŭ nelonge aĉetis domon kaj translokiĝis en ĝin. Ĉar ni ne veturas aŭtomobile, ni bezonas domon proksiman al la publika transporto, kaj sukcesis ni je tio: ni estas nur piediro da kvin minutoj for de la stacidomo, sed fakte estas bushaltejo rekte malpost nia pordo. La bushaltejo estas nekomprenebla.

Alvenas ĉiutage po ses fojoj aŭtobusoj. Kiam ajn mi serĉas rete la horaron, mi neniam trovis unu. Mi ne zorgas; mi scias la horaron ĉar la buso neniam alvenis malfrue. Sed rete, la haltejo ne ekzistas kaj la numeron oni ne uzas ekde antaŭ ol mi naskiĝis.

Alvenas la aŭtobuso el nenie, kaj nenien ĝi iras. Unufoje, kiam mi iras hejme de la stacidomo, mi vidas en la foro la buson. Inter tie, kie la buso estis, kaj mi, ne ekzistas aliaj stratoj laŭ kio la buso povus iri. Sed mi ternis kaj la buso poste ne estas videbla. Ĝi ne povis defali la randon de la mondo sed, ankaŭ, ĝi ne povis iri preter mi. Mi ne povas kompreni ĝin.

. * .

Mia patnero trafis la buson unu tagon. Post tri minutoj ri revenis, kunporti lakton.

“Kie ci akiris la lakton?”

“Ĉe la butiko …?”. Ri ne komprenas tial, kial mi demandis.

“Tre rapida!” Plejofte daŭras dudek minutojn por iri al la superbazaro, âceti ion kaj reveni.

“Ĉu? Mi trafis la buson kaj revenis piede.”

. * .

Post tiam, mi vidas plejtage homon aŭ du, kiuj surhavas malnovajn vestaĵojn. Mi volontas helpante doni vespermanĝon al senhejmuloj. Mi ofte revidas la vagantojn inter la senhejmuloj. Sed neniam la senhejmuloj estas vagontaj: ĉiam mi vidis ilin antaŭe vagantajn sur la straton ekster mia domo, kaj post inter la senhejmuloj. Oni diras, ke ili havas la alchejmermalsanon.

Pasintsemajne mi interparolis kun vaganto, kiu ne estas pli aĝa ol mi.

“Ĉu ci scias, kie Rafaellos estas?”

Rafaellos estis butiko, antaŭ la superbazaroj. La speco, en kie oni petas al la butikisto lakton kaj panon kaj sapon, kaj la butikisto donas ilin al oni. Sed mi ne sciis tion tiam.

“Kie ci loĝas?” Time mi demandis. Ankaŭ prave, ĉar ri montris fingre al mia domo. Nesurprize ni interparolis denove je ĵaŭdo. Senhejmiĝontaj estas la vagantoj ĉiam.

. * .

Eble estas nur scivolaĵo. Homoj certe ekzistas kun la alchejmermalsano. La tempon eble mi konfuzis.

Sed hieraŭ tri junuloj malaperis. Mi estas la lasta, kiu vidis ilin: ili atendis ĉe la bushaltejo. Mi ne scias kie ili estas, sed ili ja malaperis, tute malaperis, samkiel la buso. El kie ajn la vagantoj venas, tien la junuloj iris.

Bonvole kredu min!

Specoj (komputilaj)

Ĉe mia laborejo, ni uzis ĝis tempo nememorebla programlingvojn dinamike speciĝajn: plejparte PHP, Ĝavaskripto kaj SQL. Tio signifas, ke la komputilo memoras kaj scias tion, kian datumon uzas oni. La komputilo aŭtomate scias, kiel transigi ekz. numerajn signoĉenojn al eĉ numeroj. Se la komputilo povas aŭtomate funkciigi ion, ĝi funkciigas ĝin.

Sonas belega ne?

Fakte ne. Male, estas malegbelega. Se estus radiko por “malbelega”, mi dirus tion kun “-egegega” por indiki tiom, kiom malbelega ĝi estas.

La problemo estas, ke oni ne scias tion, kion oni havas. Kiam mi skribas funkcion, plejparte ĝi bezonas scii ion pri tio, kion akceptas ĝi. Oni eble dezirus preni subdaton el tio, kion akceptas la funkcio—kaj oni nepre devas havi nomon por tio; la komputilo ne povas legi sian menson. Kaj preninte ĝin, mi deziras doni ĝin al alia funkcio, kiu ankaŭ nur povas verki, se ĝi scias ion pri tio, kion ĝi ricevas. Mi ne povas flugiigi pingvenon, aŭ naĝigi paseron: nur anasoj povas kaj flugi kaj naĝi. Ne estas sufiĉe bona por miaj uzantojn se mi eventuale kraŝi tiam, kiam oni donas al mi paseron, demandante al mi naĝigi ĝin.

La problemo estas, ke la lingvo malpermesas al mi, kontrakti kun miaj uzontoj, pri tio, kion mi ricevos.

Ekzistas aliaj lingvoj, lingvoj maldinamikspecaj (aŭ eble laŭ la angla, statikspecaj). Tiaj lingvoj devigas la programanton diri tion, kun kia la programero povas funkcii (krom, ke la lingvo povas aŭtomate scii sendivene). Se mi diras, ke mi nur povas ricevi anasojn (aŭ tiujn, kiuj povas kaj naĝi kaj flugi), ne eblas doni al mi paserojn aŭ pingvenojn.

PHP dum multaj jaroj havas “specindikojn”. Estas preskaŭ tie; mankas ilon por kontroli tion, kion mi diras skribe. Kun la programilo “JetBrains PhpStorm” (ĜetBrejns PHPStormo) oni kontroli la plejparton. Fejsbuko (Facebook) eldonas preskaŭe kongruan lingvon kontroleblan “Hack”; sed pro diversaj tialoj ni ne povas uzi ĝin. En niaj propraj tempoj, certa kunlaboranto kaj mi verkas pli plenan kontrolilon. Eventuale ĉar PHP ne estas maldinamike speciĝa, ekzistas nekontrolebla eĉ ne ekspresebla okazoj. Tial, mi estas malfeliĉa, ke mi ne povas iri utopien.

Sed antaŭ nelonge, ni komencis uzi “TypeScript” (Specoskripton), etendaĵo de ECMAScript de Microsoft speckontrolata. Kiam mi estis juna, etendaĵoj de Microsoft estis malbona kaj ŝajnis tiel, ke Microsoft enŝlosis onin en iliajn ilojn. Sed Microsoft lernis, kaj neniu zorgu pri TypeScript. Ĝi funkcias ankaŭ sur Linukso kaj MacOS X, kaj estas eĉ liberprograma (kio signifas, ke ĉiu ajn permesas elŝuti kaj ŝanĝi la fontkodo.)

Laŭ mia kunlaboranto Cal, kiu eklernis ĝin hieraŭ: “Mirinde mi povas scii, ke estas kraŝonta antaŭ ol, ke mi funkciigas ĝin kaj ĝi kraŝas.” Certe, tiujare mia laboro estas tiom pli bona. Nu, se mi nur povas konvinki ilin, ke ni uzu Haskell…

Sekvantfoje, mi deziras diri ion pri plej teknikaj aferoj: la novajn ŝlosilvortojn “async” kaj “await” de onta ECMAScript.

Manĝo!

Mi ne antaŭ longa kuiras kokaĵo, sed, ĉar mi tediĝas kun mia manĝo, mi komencis.

Hieraŭ, mi kuiras plene bongusta manĝo por manĝi! Estis:

  • duona kokbrustaĵo
  • multa de sekiĝaj herboj miksitaj
  • multa de freŝa baziliko
  • duona cepo
  • unu kalabaseto
  • unu melongeno
  • spinaco
  • ajlo
  • olivoleo
  • fromaĝoj (“tasty” kaj “vintage”)
  • ŝelaj pastaĵegoj

mi kuiris la pastaĵoj en la evidenta maniero. ĉar pastaĵegoj estas ega pastaĵo, ĝi daŭris pli longe ol por pastaĵo

la kokbrustaĵon kuiris mi ĉimaniere:

  1. mi reguliĝis ĝin mane kaj unuflanke mi metis multajn herbojn
  2. en varmega pato mi metis iomon de olivoleo kaj pli ol sufiĉajn herbojn
  3. mi kuiris unuflankon de la kokaĵo dum unu minuto varmege
  4. mi turnis la kokaĵon kaj kuiras la kokaĵo dum dek minutoj kovre kaj varme
  5. mi malfaras la varmon kaj atendis dum plu dek minutoj
  6. nun estas mia kokaĵo fina! (kaj mi alia manĝo ankaŭ!)

kaj la bazkilikon, cepon, kalabaseton, melongenon, spinacon, ajlon, olivoleon, kaj fromaĝojn kuiris mi pane, ne tro varma.

estas tuta bone, ke mi scias kiel kuiri al mia gusto. mi ĉiam povas kuiri ion bongustan!

evoluo bezonas tempon

mi legas ĉi artikolon de Credit Suisse pri “grasso: la nova sanparadigmo”. estas ja nova paradigmo, por bankoj verki pri sano! kaj ĝi montras:

se saturita graso estus tiel malbona por oni, kiel la nune rekomendita nivelo sub 10% signifus, do certe evoluo jam malpliigintus (en.: “would have taken care of lowering”) la nivelon de saturita graso de la [homa] lakto.

oni nur manĝas homan lakton por malmultaj jaroj, kaj neniu dirus, ke saturita graso estas morta tiel rapide! evoluo nur funkcias tiam, kiam ĝi povas ŝanĝi la ŝancon de iu por gapatriĝi.

por ĉi tio argumento esti tiel malbona, kiel oni ne uzus ĝin iam, estas tute neimportanta, ĉu saturita graso estas bona aŭ ĉu ĝi estas malbona; aŭ ĉu oni povus trovi certigitan evidenton.

ankoraŭ, post monato de peno, mi ne povas decidi, ke la karbonhidratmalpliigaj-graspliigaj uloj estas fidindaj. certe la anoj povas esti fidindaj, sed la estroj? mi pensas ke ne. tro multa da ruzoj.

evidente pravas la vikipedio tiam, kiam ĝi diras, ke la karbonhidratmalplia manĝomaniero estas furora manĝomaniero, ne scienca.