LINUX.ORG.RU

История изменений

Исправление wandrien, (текущая версия) :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var @workspaces = (
			xfconf-query --channel xfce4-desktop --list ^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования. (UPDATE: Ладно, вру. Можете на лямбах.)

Максимум вы можете заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL лучше.

Исправление wandrien, :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var @workspaces = (
			xfconf-query --channel xfce4-desktop --list ^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования. (UPDATE: Ладно, вру. Можете на лямбах.)

Максимум вы можете заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL по всем параметрам лучше.

Исправление wandrien, :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var workspaces = (
			xfconf-query --channel xfce4-desktop --list ^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования. (UPDATE: Ладно, вру. Можете на лямбах.)

Максимум вы можете заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL по всем параметрам лучше.

Исправление wandrien, :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var workspaces = (
			xfconf-query --channel xfce4-desktop --list ^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.

Максимум вы можете заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции как and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL по всем параметрам лучше.

Исправление wandrien, :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var workspaces = (
			xfconf-query --channel xfce4-desktop --list ^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.

Максимум вы можете заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL по всем параметрам лучше.

Исправление wandrien, :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var workspaces = (
			xfconf-query --channel xfce4-desktop --list ^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.

Максимум что вы можете заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL по всем параметрам лучше.

Исправление wandrien, :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var workspaces = (
			xfconf-query --channel xfce4-desktop --list ^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.

Максимум что вы можете это заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL по всем параметрам лучше.

Исходная версия wandrien, :

Я, конечно, из принципа сейчас допишу код до рабочего состояния,

Да хрен с ней не буду. Выглядит это всё примерно вот так:

fn list_all_windows {|regexp|
	set _ = ?(
		xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
	)
}

fn check_xfdesktop {
	var @ids = (list_all_windows xfdesktop)
	for id $ids {
		var props = (xprop -id $id | slurp)
		if (and ^
			(str:contains $props 'WM_CLASS(STRING) = "xfdesktop", "Xfdesktop"') ^
			(str:contains $props '_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DESKTOP')
		) {
			put $true
			return
		}
	}
	put $false
}

fn set_wallpaper_xfdesktop {|path|
	if (and (has-external xfconf-query) (check_xfdesktop) ) {
		var workspaces = (
			xfconf-query --channel xfce4-desktop --list \^
			| grep -o '/backdrop/screen[^/]*/monitor[^/]*/workspace[^/]*/' | sort | uniq
		)
		for workspace $workspaces {
			xfconf-query --channel xfce4-desktop --property {$workspace}last-image --set $path
		}
		put $true
		return
	}
	put $false
}

В языке нет встроенной функции для того чтобы «вернуть результат вычисления, если в вычислении не было исключения, в ином случае вернуть исключение как результат». А написать её сами вы не можете из-за отсутствия гомоиконности и средств метапрограммирования.

Максимум что вы можете это заглушить бросок исключения:

  set _ = ?(
    xwininfo -tree -root | grep $regexp | grep -o '^[[:space:]]\+0x[0-9a-fA-F]\+' | grep -o '0x[0-9a-fA-F]\+'
  )

А так как ненулевой код возврата внешней команды приводит к броску исключения, пользоваться этим вы будете на регулярной основе.

Далее отсутствие гомоиконности и метапрограммирования приводит к тому, что такие функции if, and, or, coalesce и т.п. являются «специальными». Использовать вы их можете, а вот написать собственный аналог с контролем потока управления — нет.

В качестве замены вам предлагают программировать на first-class лямбдах. Единообразие синтаксических средств не соблюдено.

Вот и получается, что синтаксически TCL по всем параметрам лучше.