Hom4ikTop4ik / 23217_MartynovBogdan

0 stars 0 forks source link

Семинар 12 (lambda-calc) #11

Open denisenes opened 6 months ago

denisenes commented 6 months ago

variant = 1 -- забавно) Вроде читается получше, хоть и очень непривычно

I insert second condition because if I see (\x.xx)(\x.xx) I want exit recursion Это очень хорошее условие, которое в математике зовется фиксированной точкой (точкой стабильности) Fun-fact: в компиляторах оптимизации над программой проводятся до фиксированной точки, то есть до момента, когда программа не начнет оставаться неизменной при применении оптимизаций (в нашем случае "оптимизациями" являются бета-редукции) Предполагалось, что достижение фиксированной точки будет проверяться предикатом canBeReduced, но твое условие немного шире и допускает терм (\x.xx)(\x.xx). Что ж, почему бы и нет

На тестовых термах все работает хорошо, к коду в принципе тоже никаких замечаний нет, за задание поставлю 5. Давай еще на семинаре обсудим, что у тебя получилось по доп. заданию и если что я повышу еще на балл

Hom4ikTop4ik commented 6 months ago

После сессии попробую доделать Например, переименовать редукторы в call-by-name и call-by-value. Возможно, добавлю эта-редуктор (чтобы калькулятор приводил лямюда-терм к нормальной форме)

Hom4ikTop4ik commented 6 months ago

Ещё я научился печатать цветным текстом в консоль

Пример на си (чтоб не потерять)):

#include <stdio.h>

#define RESET   "\33[0m"
#define RED     "\033[40;1;31m"
#define YELLOW  "\033[43;1;33m"
#define WHITE   "\033[41;1;36m"

int main() {
    printf("%s8%s",     YELLOW, RESET);
    printf("%s===3%s ", RED,    RESET);
    printf("%s-.%s\n",  WHITE,  RESET);
}
/*
Сбросить все свойства   | 0
Повышенная яркость  | 1
Пониженная яркость  | 2
Подчеркнутый        | 4
Нормальная яркость  | 5
Инвертированный     | 7
Скрытый         | 8
********** ЦВЕТА ***********
Название цвета  |Текст  |Фон
----------------|-------|---
Черный      | 30    | 40
Красный     | 31    | 41
Зеленый     | 32    | 42
Желтый      | 33    | 43
Синий       | 34    | 44
Маджента    | 35    | 45
Циановый    | 36    | 46
Белый       | 37    | 47
----------------------------
*/
Hom4ikTop4ik commented 3 months ago

Если хочется в cmd такое делать, а не через си, haskel и т.д.:

@echo off
SetLocal EnableExtensions
::color 0F   :: reset color all cmd (you can uncomment)

:: first  hexDigit is BackGroundColor
:: second hexDigit is TextColor (ForeGround)

:: example
set start_red=0C       :: red on black
set start_green=0A     :: green on black
set start_cyan=0B      :: cyan on black
set start_yellow=0E    :: yellow on black
set start_blue=09      :: blue on black
set start_baklajan=0D  :: darkMagenta on black
set start_lightblue=01 :: lightBlue on black

:: ======================================

:: common text
call :echoColor 00 "text" \n

:: WHITE text (yes, 0F is more white then 00)
call :echoColor 0D "text" \n

:: blue text on magenta
call :echoColor D1 "text" \n

:: gray text on cyan
call :echoColor B2 "text" \n

:: withount \n, Python example: print("text", end="")
call :echoColor 83 "text"

:: lightYellow text on lightYellow
call :echoColor EE "text" \n

:: =======================================

goto :eof   :: skip :echoColor

:: func from The Internet, Thanks)
:echoColor [Color] [Text] [\n]
  if not defined BS for /F "tokens=1 delims=#" %%i in ('"prompt #$H#& echo on& for %%j in (.) do rem"') do set "BS=%%i"
  if not exist foo set /p .=.<nul>foo
  set "regex=%~2" !
  set "regex=%regex:"=\"%"
  findstr /a:%1 /prc:"\." "%regex%\..\foo" nul
  set /p .=%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%%BS%<nul
  if "%3" neq "" echo.