> 1 <

Автор Сообщение

AlYuSed

Members


Статус

1 сообщений

Где: Russia
Род занятий:
Возраст:

#7825   2018-01-21 14:03 GMT+3 часа(ов)      
Здравствуйте!

Я интересуюсь функциональным программированием, очень нравится концепция. И вот меня заинтересовал вопрос, а можно ли на Лиспе написать самое обычное графическое приложение для Windows? Чтобы получился экзешник, желательно небольшой и быстрый. И чтобы не плясать с бубном, а просто сделать и все. Ну как в Delphi или PureBasic. Погуглив, я нашел только Racket и коммерческие Лиспы с невменяемыми ценниками. Еще нашел NewLisp - хоть там и придется плясать с бубном, но сравнительно немного и это может быть даже весело. Но он интерпретируемый, хотя для простой утилиты это неважно, на Python полно таких - и ничего, все довольны. Например, Task Coach и Red Notebook довольно популярны.

Только просьба не смеяться и не говорить что-то типа: вот и пиши на Delphi и PureBasic. Я решал задачи на Лисп и Хаскелл, они мне очень понравились, хотя я понимаю, что знаю их на уровне хеллоуворлдов. Языки типа C, Pascal, Basic не нравятся тем, что нет сборки мусора. Плюс необходимость расписывать кучу мелких действий. А C# требует дотнет. Про Джаву вообще речи нет. D сырой. Go задумывался не для десктопов, поэтому там все печально с соответствующими батарейками. Хотя сам по себе язык прекрасен, эдакий C с коллекциями и сборкой мусора. ;)

Кстати, тот же вопрос про Haskell. Я сходу нашел одно гуевое приложение - FreeArc. Судя по всему, оно не развивается и никому не нужно.

Яков Замир Кацман (нью)

Members


Статус

51 сообщений

Где: Russia
Род занятий:
Возраст:

#7826   2018-01-24 10:34 GMT+3 часа(ов)      
может быть так?

 
(progn (load "/usr/home/useralex/quicklisp/dists/quicklisp/software/slime-v2.20/swank-loader.lisp" :verbose t) (funcall (read-from-string "swank-loader:init")) (funcall (read-from-string "swank:start-server") "/tmp/slime.2563"))
 
This is SBCL 1.0.99.999, an implementation of ANSI Common Lisp.
More information about SBCL is available at <http://www.sbcl.org/>.
 
SBCL is free software, provided as is, with absolutely no warranty.
It is mostly in the public domain; some portions are provided under
BSD-style licenses. See the CREDITS and COPYING files in the
distribution for more information.
*
; loading #P"/usr/home/useralex/quicklisp/dists/quicklisp/software/slime-v2.20/swank-loader.lisp"
WARNING:
redefining EMACS-INSPECT (#<SB-PCL:SYSTEM-CLASS COMMON-LISP:T>) in DEFMETHOD
;; Swank started at port: 35875.
35875
* (ql:quickload :sdl2)
(defparameter *screen-width* 640)
(defparameter *screen-height* 480)
 
(defun main (&key (delay 2000))
(sdl2:with-init (:video)
(sdl2:with-window (window :title "SDL2 Window" :w *screen-width* :h *screen-height*)
(let ((screen-surface (sdl2:get-window-surface window)))
(sdl2:fill-rect screen-surface
nil
(sdl2:map-rgb (sdl2:surface-format screen-surface) 255 255 255))
(sdl2:update-window window)
(sdl2:delay delay)))))
To load "sdl2":
Load 1 ASDF system:
sdl2
; Loading "sdl2"
.....
(:SDL2)
*
*SCREEN-WIDTH*
*
*SCREEN-HEIGHT*
*
MAIN
* (main)
 

*

Яков Замир Кацман (нью)

Members


Статус

51 сообщений

Где: Russia
Род занятий:
Возраст:

#7827   2018-01-28 16:10 GMT+3 часа(ов)      
Ну или так:

(Simple GUI application in the lisp)

[0] http://www.peter-herth.de/ltk/ltkdoc.pdf
[1] http://www.peter-herth.de/ltk/ltkdoc/node51.html
[2] http://www.cardarmy.ru/proekt/lisp/art1.htm

 
;; устанавливаем нужные пакеты:
;; sudo pkg install tk85-8.5.19
;; New packages to be INSTALLED:
;; tk85: 8.5.19
;; tcl85: 8.5.19_1
;;BEFORE :: (ql:quickload :ltk)
 
(defpackage :hello-world
(:use :common-lisp :ltk)
(:export #:main))
(in-package :hello-world)
(defun main ()
(setf *debug-tk* nil)
(with-ltk ()
(let* (
(root (make-instance 'frame :height 200 :width 300))
(l1 (make-instance 'label
:master root
:text "одно число"))
(ea (make-instance 'entry
:text "0"
:master root
:width 58
))
(l2 (make-instance 'label
:master root
:text "второе число"))
(eb (make-instance 'entry
:text "0"
:master root
:width 58
))
(l3 (make-instance 'label
:master root
:text "Результат"))
(ec (make-instance 'entry
:text "0"
:master root
:width 58
))
(b1 (make-instance 'button
:master root
:width 54
:text "умножить"
:command (lambda ()
(setf (text ec) ( * (parse-integer (text eb)) (parse-integer (text ea)))))))
(b (make-instance 'button :master root :text "EXIT BUTTON!"
:command (lambda ()
(do-msg "EXIT?")
(setf *exit-mainloop* t))))
)
(wm-title *tk* "ПЕРВОЕ ОКОННОЕ ПРИЛОЖЕНИЕ")
(pack root :side :top)
(pack l1)
(pack ea)
(pack l2)
(pack eb)
(pack l3)
(pack ec)
(pack b1)
(pack b :side :left)
)))
 
 
;;(load "/usr/home/useralex/LISP_EXAMPLE/ex1.lsp")
;;(in-package :hello-world)
;;(main)

отредактировал(а) Яков Замир Кацман (нью): 2018-01-28 17:46 GMT+3 часа(ов)

Яков Замир Кацман (нью)

Members


Статус

51 сообщений

Где: Russia
Род занятий:
Возраст:

#7830   2018-01-28 19:48 GMT+3 часа(ов)      
И еще здесь:
https://common-lisp.net/project/mcclim/static/documents/mcclim.pdf
Да, 'коммерческие Лиспы с невменяемыми ценниками' это они Вам даром попробовать предлагают. Общий уровень стоимости разработки будет выше.

Яков Замир Кацман (нью)

Members


Статус

51 сообщений

Где: Russia
Род занятий:
Возраст:

#7833   2018-01-31 11:48 GMT+3 часа(ов)      
Еще так можно сделать: (ql:quickload '(:cl-gtk2-gtk :cl-portaudio)) и у Вас будет gtk!
> 1 <


Онлайн :

0 пользователь(ей), 28 гость(ей) :




Реклама на сайте: