| Hjem | Hardware | Netværk | Programmering | software | Fejlfinding | systemer | 
Programmering  
  • C /C + + Programming
  • Computer Programmeringssprog
  • Delphi programmering
  • Java programmering
  • JavaScript Programmering
  • PHP /MySQL programmering
  • Perl programmering
  • Python Programming
  • Ruby Programming
  • Visual Basics Programmering
  •  
    Computer Viden >> Programmering >> Computer Programmeringssprog >> Content
    Hvad er Redex, og hvordan forholder det sig til evalueringen af ​​udtryk i programmeringssprog?

    omex:nøglen til ekspressionsevaluering

    A omdirigeret (Kort til reducerbar udtryk ) er en del af et udtryk på et programmeringssprog, der kan forenkles eller reduceret I henhold til sprogets evalueringsregler . Tænk på det som et underudtryk, der er "moden" til beregning.

    I det væsentlige er en Redex det kode, hvor det næste beregningstrin kan ske.

    hvordan det relaterer til evaluering:

    Evaluering af et udtryk involverer gentagne gange at identificere og reducere Redekser, indtil udtrykket er i en "normal form" - en tilstand, hvor ingen yderligere reduktioner er mulige. Denne normale form repræsenterer det endelige resultat af udtrykket.

    Her er en sammenbrud af forbindelsen:

    1. Identificer Redex: Evalueringsprocessen starter med at scanne udtrykket for at finde en underekspression, der matcher en kendt reduktionsregel. Dette er Redex.

    2. Reducer Redex: Redex er derefter "reduceret" eller "omskrevet" ved hjælp af den tilsvarende reduktionsregel. Dette involverer normalt udskiftning af Redex med et enklere udtryk.

    3. Gentag: Processen gentages. Det nye udtryk (efter reduktionen) er kontrolleret for en anden Redex. Dette fortsætter, indtil der ikke findes flere Retexes.

    4. Normal form: Det endelige udtryk, der ikke indeholder nogen Redexes, betragtes som resultatet af evalueringen. Det er "værdien" af det originale udtryk.

    Eksempler til at illustrere:

    1. Lambda Calculus (en simpel beregningsmodel):

    * Ekspression: `(λx. x + 1) 5` (dette repræsenterer en funktion, der tilføjer 1 til dens argument, anvendt til værdien 5)

    * omdrivex: `(λx. x + 1) 5` i sig selv er Redex. Det er en anvendelse af en Lambda -funktion til et argument.

    * Reduktionsregel: Beta-reduktionsreglen (erstatter argumentet for parameteren i funktionskroppen).

    * reduktion: `(λx. x + 1) 5` reduceres til` 5 + 1`

    * Næste Redex: `5 + 1`

    * Reduktionsregel: Derudover.

    * reduktion: `5 + 1` reduceres til` 6`

    * Normal form: `6` (ikke flere Redexes. Dette er det endelige resultat.)

    2. Aritmetisk udtryk:

    * Ekspression: `(2 + 3) * 4`

    * Redex (under en streng evalueringsordre, som på de fleste sprog): `2 + 3`

    * Reduktionsregel: Derudover.

    * reduktion: `(2 + 3) * 4 'reduceres til` 5 * 4`

    * Næste Redex: `5 * 4`

    * Reduktionsregel: Multiplikation.

    * reduktion: `5 * 4` reduceres til` 20`

    * Normal form: `20`

    3. Betinget erklæring (på et hypotetisk sprog):

    * Ekspression: `Hvis sandt, så 10 andet 20`

    * omdrivex: `Hvis sandt, så 10 andet 20`

    * Reduktionsregel: Hvis tilstanden er sand, skal du udskifte hele udtrykket med "derefter" gren.

    * reduktion: `Hvis sandt, reduceres 10 ellers 20` til` 10`

    * Normal form: `10`

    nøglekoncepter relateret til omdirigering:

    * Evalueringsstrategi: Den rækkefølge, hvor RedExes vælges til reduktion, påvirker evalueringsprocessen. Almindelige strategier inkluderer:

    * Anvendelsesordre (ivrig evaluering): Evaluer argumenterne til en funktion * før * anvender selve funktionen. Dette implementeres ofte med streng evaluering (som mange imperative sprog såsom Java, C ++, Python).

    * Normal ordre (doven evaluering): Evaluer argumenterne til en funktion * kun når * deres værdier faktisk er nødvendige. Dette bruges på rent funktionelle sprog som Haskell.

    * CALL-by-Name: Udskift det uevaluerede argument direkte i funktionslegemet.

    * Opkald til værdi: Evaluer argumentet og videregiver dens værdi til funktionen. Svarende til ansøgningsordre.

    * Opkald til behov: I lighed med opkald-for-navn, men meminerer resultatet af den første evaluering, så efterfølgende anvendelser af argumentet ikke kræver reevaluering. Haskell bruger dette.

    * sammenløb: En ønskelig egenskab ved et reduktionssystem er, at uanset den rækkefølge, hvor RedExes reduceres, vil den endelige normale form (hvis den findes) være den samme. Dette er kendt som Church-Rosser-sætningen, og det gælder for Lambda Calculus og mange andre formelle systemer.

    Hvorfor er Redekser vigtige?

    * formel semantik: Regler og reduktionsregler giver en præcis og formel måde at definere semantikken (hvilket betyder) af et programmeringssprog.

    * kompilatoroptimering: Kompilatorer kan bruge Redex -identifikation og reduktion til at optimere koden. For eksempel er konstant foldning (evaluering af konstante udtryk på kompileringstidspunktet) en form for Redex -reduktion.

    * Teoretisk forståelse: Redexes er grundlæggende for at forstå, hvordan beregningen fungerer på et meget grundlæggende niveau. De er en hjørnesten i mange programmeringssprogsteori -koncepter.

    * Ligational ræsonnement: Ræsonnement om programkorrekthed ved at bruge reduktionsregler til at omdanne kode til ækvivalente formularer.

    Sammenfattende er begrebet en Redex centralt for at forstå, hvordan udtryk evalueres i programmeringssprog. Det giver en ramme for at definere, implementere og resonnere om beregning. Ved gentagne gange at finde og reducere Redekser kan vi bestemme det endelige resultat af et udtryk.

    Forrige :

    næste :
      Relaterede artikler
    ·Hvad betyder Ugyldig Syntax Mean 
    ·Hvordan man kan rette en syntaksfejl 
    ·Sådan oprettes en variant for SM30 
    ·Sådan oprettes en Lisp Macro 
    ·Sådan bruges Preference Loader på en iPhone 
    ·Sådan indstilles Center i en KML-fil 
    ·Hvorfor er pda bedre end cfg for ikke-regulære sprog? 
    ·Sådan konfigureres Citrix 
    ·Sådan Partition & Format i DOS 
    ·Hvad er computersproget, der stadig er i brug? 
      Anbefalede Artikler
    ·Sådan tilføjes Glut Med Visual C 
    ·Sådan importeres SQLite til MySQL 
    ·Hvordan man omdirigerer brugerne baseret på deres IP B…
    ·Hvad er årsagen Done Men med fejl på en side 
    ·Sådan oprettes en for Statement i Ruby 
    ·Anvendelse af Python Yield 
    ·Sådan Gør Millions 
    ·Sådan afgøres, hvilken er afkrydset i Visual Basic Ne…
    ·Sådan Upload til S3 med Python 
    ·Sådan at sortere efternavne Alfabetisk i Python 
    Copyright © Computer Viden https://www.computerdk.com