🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.c
Article #310203

Re: Coroutines w (GNU) C

#310203
From: Maciek Godek
Date: Wed, 29 Jan 2020 23:54
84 lines
5050 bytes
W dniu czwartek, 30 stycznia 2020 00:01:59 UTC+1 użytkownik heby napisał:

> >>> Korutyna nie jest "pure function".
> >> Nie ma przeszkód aby była. 
> > Jest zasadnicza. Korutyna ma swój stan wewnętrzny, który z definicji jest mutowalny.
> 
> Może sobie mieć. Istotne jest że stan ten nie przecieka nigdzie poza nią.

W korutynach właśnie przecieka.

Jeżeli mam:

int c() {
  while(1) {
    yield(1);
    yield(2);
  }
}

to jaka będzie wartość wyrażenia c()?

> Tak samo 
pure funkcja może mieć sobie w środku mutowalne "int a".
> 
> I sobie mutuje.
> 
> I nie przecieka poza tą funkcję.
> 
> Własnie odkryłeś że funkcje pure mogą mieć mutowalne, prywatne zmienne w 
> środku i dalej być pure.

Mylisz "funkcje pure" z hermetyzacją.

> > A czysta funkcja robi tylko jedno: odwzorowuje wejście w wyjście. Zawsze dla tego samego wejścia ma dać to samo wyjście. Nie ma stanu wewnętrznego.
> 
> Ależ ma. Na ten przykład :
> 
> foo() {
> int a = 1;
> a = 2
> return a;
> }
> 
> Jeśli zatrzymasz ja w połowie to ma stan wewnętrzny. Ale on nie jest 
> widoczny poza tą funkcją, nie jest dostępny również w korutynie poza nią.

Funkcji nie da "się zatrzymać", bo ona "się nie wykonuje".
Ona odwzorowuje wejście w wyjście,

> Bycie pure to nie jest nie posiadanie kompletnie żadnego stanu. To jest 
> nie ingerowanie w stan poza tą funkcją. W C/C++ do tego używa się 
> zazwyczaj stosu.

Może lepiej idź już spać.

> > I to jest dość kolosalna przeszkoda.
> >>> Czyste funkcje w ogóle nie mają czegoś takiego, jak "przebieg sterowania".
> 
> To zabawne, bo moje korutyny też nie mają. Robią yield() i z ich puktu 
> widzenia nic się nie stało, jadą dalej.

Jeżeli "jadą", to mają przebieg sterowania.
Przebieg sterowania to jest właśnie "jechanie".
I ono jest czymś istotnym dla korutyny.

Tutaj masz, proszę, poczytaj sobie:
https://www.quora.com/What-is-functional-programming/answer/Panicz-Godek

> Korutyna zachowuje się jak funkcja z wieloma punktami wyjścia i 
> hermetycznym stanem pomiędzy.

Funkcja nie ma czegoś takiego jak "punkt wyjścia". Funkcja odwzorowuje dziedzinę w przeciwdziedzinę.

> I wiesz co, postanowiłem że kodu nie napiszę. To poniżej godności żeby 
> udowaniać komuś rzeczy oczywiste.

No ja wiem. Nie zaskakuje mnie to.
Pierdolić potrafi każdy. Ilustrować swoje tezy przykładami już niekoniecznie.

Kodu nie napiszesz, ale nie dlatego, że to "poniżej godności", tylko dlatego, że to, co do tej pory mówiłeś o korutynach, nie miało sensu.

Określenie, żeby "odpalać naprzemiennie tę samą korutynę" jest całkowitą bzdurą.

Naprzemiennie możesz odpalać dwie różne rzeczy, a nie "dwie te same rzeczy", bo "dwie te same rzeczy" to jest jedna i ta sama rzecz.
Technical Details
Message-ID: <ad3e2138-75af-4125-bb5e-ca7376fc8ef9@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!g89no1063562qtd.0!news-out.google.com!w29ni1013qtc.0!nntp.google.com!g89no1063550qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <b7cfec93-1d13-44e3-a924-0869447ed3c7@googlegroups.com> <r0seqp$av0$1@dont-email.me> <462689f9-f50d-4a96-8910-cb65757a017a@googlegroups.com> <r0st86$956$1@dont-email.me> <cc360fba-2eab-4928-8e14-36db20fa4a96@googlegroups.com> <r0sv2c$k80$1@dont-email.me> <c4bfeba1-23f9-4307-a084-078282879401@googlegroups.com> <r0t2t5$bun$1@dont-email.me>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:620a:b06:: with SMTP id t6mr2610352qkg.373.1580342094733; Wed, 29 Jan 2020 15:54:54 -0800 (PST)
X-Received: by 2002:a25:ab81:: with SMTP id v1mr1861789ybi.277.1580342094489; Wed, 29 Jan 2020 15:54:54 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.eu.feeder.erje.net!feeder.erje.net!newsfeed.xs4all.nl!newsfeed7.news.xs4all.nl!tr2.eu1.usenetexpress.com!feeder.usenetexpress.com!tr3.iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!g89no1063562qtd.0!news-out.google.com!w29ni1013qtc.0!nntp.google.com!g89no1063550qtd.0!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.c
Date: Wed, 29 Jan 2020 15:54:54 -0800 (PST)
In-Reply-To: <r0t2t5$bun$1@dont-email.me>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=83.25.200.96; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 83.25.200.96
References: <4375b52d-ba21-462a-8844-9bd1a02e9ece@googlegroups.com> <r0k8i5$ifg$1@dont-email.me> <ce3f0b08-658f-4248-b82c-09f093a7f20c@googlegroups.com> <r0kq6d$v6h$1@dont-email.me> <748c5d16-f4a8-43a0-8a56-bea0800e1e04@googlegroups.com> <r0n95e$35l$1@dont-email.me> <f3df206c-11d4-4b22-87ff-fc7aa00935f3@googlegroups.com> <r0nevq$9iq$1@dont-email.me> <ecae4ae1-0b06-4956-8df0-593fa0f1cd01@googlegroups.com> <r0njjv$740$1@dont-email.me> <0e0786af-7b58-4070-b8cd-81f1bda1f432@googlegroups.com> <r0q9iv$23b$1@dont-email.me> <b7cfec93-1d13-44e3-a924-0869447ed3c7@googlegroups.com> <r0seqp$av0$1@dont-email.me> <462689f9-f50d-4a96-8910-cb65757a017a@googlegroups.com> <r0st86$956$1@dont-email.me> <cc360fba-2eab-4928-8e14-36db20fa4a96@googlegroups.com> <r0sv2c$k80$1@dont-email.me> <c4bfeba1-23f9-4307-a084-078282879401@googlegroups.com> <r0t2t5$bun$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <ad3e2138-75af-4125-bb5e-ca7376fc8ef9@googlegroups.com>
Subject: Re: Coroutines w (GNU) C
From: Maciek Godek <godek.maciek@gmail.com>
Injection-Date: Wed, 29 Jan 2020 23:54:54 +0000
Lines: 104
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit